From 77faf4774bbb9da7bd5b48e653709953f0e59da9 Mon Sep 17 00:00:00 2001 From: The3D <emilio@aave.com> Date: Tue, 21 Jul 2020 10:20:51 +0200 Subject: [PATCH] Fixed configuration library --- contracts/libraries/ReserveConfiguration.sol | 38 ++++++++++++-------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/contracts/libraries/ReserveConfiguration.sol b/contracts/libraries/ReserveConfiguration.sol index d224305f..030cfb3c 100644 --- a/contracts/libraries/ReserveConfiguration.sol +++ b/contracts/libraries/ReserveConfiguration.sol @@ -21,7 +21,7 @@ library ReserveConfiguration { uint256 constant LTV_MASK = 0xFFFFFFFF0000; uint256 constant LIQUIDATION_THRESHOLD_MASK = 0xFFFF0000FFFF; uint256 constant LIQUIDATION_BONUS_MASK = 0x0000FFFFFFFF; - uint256 constant LIQUIDATION_BONUS_MASK = 0x00FFFFFFFFFFFF; + uint256 constant DECIMALS_MASK = 0x00FFFFFFFFFFFF; struct Map { //bit 0-15: LTV @@ -31,35 +31,45 @@ library ReserveConfiguration { uint256 data; } - function setLTV(ReserveConfiguration.Map _self, uint256 _ltv) internal { + function setLTV(ReserveConfiguration.Map storage _self, uint256 _ltv) internal { _self.data = (_self.data & LTV_MASK) | _ltv; } - function getLTV(ReserveConfiguration.Map _self) internal view returns (uint256) { - return _self.data & !LTV_MASK; + function getLTV(ReserveConfiguration.Map storage _self) internal view returns (uint256) { + return _self.data & ~LTV_MASK; } - function setLiquidationThreshold(ReserveConfiguration.Map _self, uint256 _threshold) internal { + function setLiquidationThreshold(ReserveConfiguration.Map storage _self, uint256 _threshold) + internal + { _self.data = (_self.data & LIQUIDATION_THRESHOLD_MASK) | (_threshold << 16); } - function getLiquidationThreshold(ReserveConfiguration.Map _self) internal view returns (uint256) { - return (_self.data & !LIQUIDATION_THRESHOLD_MASK) >> 16; + function getLiquidationThreshold(ReserveConfiguration.Map storage _self) + internal + view + returns (uint256) + { + return (_self.data & ~LIQUIDATION_THRESHOLD_MASK) >> 16; } - function setLiquidationBonus(ReserveConfiguration.Map _self, uint256 _bonus) internal { + function setLiquidationBonus(ReserveConfiguration.Map storage _self, uint256 _bonus) internal { _self.data = (_self.data & LIQUIDATION_BONUS_MASK) | (_bonus << 32); } - function getLiquidationBonus(ReserveConfiguration.Map _self) internal view returns (uint256) { - return (_self.data & !LIQUIDATION_BONUS_MASK) >> 32; + function getLiquidationBonus(ReserveConfiguration.Map storage _self) + internal + view + returns (uint256) + { + return (_self.data & ~LIQUIDATION_BONUS_MASK) >> 32; } - function setDecimals(ReserveConfiguration.Map _self, uint256 _decimals) internal { - _self.data = (_self.data & DECIMALS_MASK) | (_ltv << 48); + function setDecimals(ReserveConfiguration.Map storage _self, uint256 _decimals) internal { + _self.data = (_self.data & DECIMALS_MASK) | (_decimals << 48); } - function getDecimals(ReserveConfiguration.Map _self) internal view returns (uint256) { - return (_self.data & !DECIMALS_MASK) >> 48; + function getDecimals(ReserveConfiguration.Map storage _self) internal view returns (uint256) { + return (_self.data & ~DECIMALS_MASK) >> 48; } }