diff --git a/src/utils/MerkleTreeLib.sol b/src/utils/MerkleTreeLib.sol index 6d12bec529..46f352de1b 100644 --- a/src/utils/MerkleTreeLib.sol +++ b/src/utils/MerkleTreeLib.sol @@ -262,8 +262,9 @@ library MerkleTreeLib { mstore(0x00, 0xe7171dc4) // `MerkleTreeLeavesEmpty()`. revert(0x1c, 0x04) } - let p := 1 // Padded length. - for {} lt(p, l) {} { p := add(p, p) } + let p := sub(mload(leaves), 1) + for { let i := 1 } lt(i, 0x80) { i := add(i, i) } { p := or(p, shr(i, p)) } + p := add(p, 1) mstore(result, p) // Store length. mstore(0x40, add(result, add(0x20, shl(5, p)))) // Allocate memory. let d := sub(result, leaves)