diff --git a/contracts/protocol/libraries/logic/PoolHelperLogic.sol b/contracts/protocol/libraries/logic/PoolHelperLogic.sol index a10c48c26..3456cfddd 100644 --- a/contracts/protocol/libraries/logic/PoolHelperLogic.sol +++ b/contracts/protocol/libraries/logic/PoolHelperLogic.sol @@ -151,4 +151,22 @@ library PoolHelperLogic { emit ReserveUsedAsCollateralDisabled(asset, msg.sender); } } + + function dropReserve( + mapping(address => DataTypes.ReserveData) storage reserves, + mapping(uint256 => address) storage reservesList, + address asset + ) public { + ValidationLogic.validateDropReserve(reserves[asset]); + _removeReserveFromList(reserves, reservesList, asset); + delete reserves[asset]; + } + + function _removeReserveFromList( + mapping(address => DataTypes.ReserveData) storage reserves, + mapping(uint256 => address) storage reservesList, + address asset + ) internal { + reservesList[reserves[asset].id] = address(0); + } } diff --git a/contracts/protocol/pool/Pool.sol b/contracts/protocol/pool/Pool.sol index a2e3b4d72..6eb3ec076 100644 --- a/contracts/protocol/pool/Pool.sol +++ b/contracts/protocol/pool/Pool.sol @@ -583,9 +583,7 @@ contract Pool is VersionedInitializable, IPool, PoolStorage { ///@inheritdoc IPool function dropReserve(address asset) external override onlyPoolConfigurator { - ValidationLogic.validateDropReserve(_reserves[asset]); - _removeReserveFromList(asset); - delete _reserves[asset]; + PoolHelperLogic.dropReserve(_reserves, _reservesList, asset); } ///@inheritdoc IPool @@ -733,8 +731,4 @@ contract Pool is VersionedInitializable, IPool, PoolStorage { } } } - - function _removeReserveFromList(address asset) internal { - _reservesList[_reserves[asset].id] = address(0); - } }