From 3dadd40034961d5ca75fa209a4188b01d7129501 Mon Sep 17 00:00:00 2001 From: Anton Bukov Date: Fri, 30 Jul 2021 10:48:45 +0300 Subject: [PATCH] Avoid safe math in BitMap (#2797) --- contracts/utils/structs/BitMaps.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contracts/utils/structs/BitMaps.sol b/contracts/utils/structs/BitMaps.sol index f41cb8c97..eff818027 100644 --- a/contracts/utils/structs/BitMaps.sol +++ b/contracts/utils/structs/BitMaps.sol @@ -14,8 +14,8 @@ library BitMaps { * @dev Returns whether the bit at `index` is set. */ function get(BitMap storage bitmap, uint256 index) internal view returns (bool) { - uint256 bucket = index / 256; - uint256 mask = 1 << (index % 256); + uint256 bucket = index >> 8; + uint256 mask = 1 << (index & 0xff); return bitmap._data[bucket] & mask != 0; } @@ -38,8 +38,8 @@ library BitMaps { * @dev Sets the bit at `index`. */ function set(BitMap storage bitmap, uint256 index) internal { - uint256 bucket = index / 256; - uint256 mask = 1 << (index % 256); + uint256 bucket = index >> 8; + uint256 mask = 1 << (index & 0xff); bitmap._data[bucket] |= mask; } @@ -47,8 +47,8 @@ library BitMaps { * @dev Unsets the bit at `index`. */ function unset(BitMap storage bitmap, uint256 index) internal { - uint256 bucket = index / 256; - uint256 mask = 1 << (index % 256); + uint256 bucket = index >> 8; + uint256 mask = 1 << (index & 0xff); bitmap._data[bucket] &= ~mask; } }