diff --git a/evmole/evm/memory.py b/evmole/evm/memory.py index 095def4..b627fa5 100644 --- a/evmole/evm/memory.py +++ b/evmole/evm/memory.py @@ -13,8 +13,8 @@ def store(self, offset: int, value: bytes): def load(self, offset: int) -> tuple[bytes, set[bytes]]: res: list[tuple[int, bytes, bytes | None]] = [(0, b'\x00', None)] * 32 - for i in range(offset, offset + 32): - idx = i - offset + for idx in range(32): + i = idx + offset for off, seq, val in self._data: if seq >= res[idx][0] and i >= off and i < off + len(val): res[idx] = (seq, val[i - off : i - off + 1], val) diff --git a/js/src/evm/memory.js b/js/src/evm/memory.js index 8aea065..efe2d8a 100644 --- a/js/src/evm/memory.js +++ b/js/src/evm/memory.js @@ -17,8 +17,8 @@ export default class Memory { load(offset) { const res = new Array(32).fill([0, 0, undefined]) - for (let i = offset; i < offset + 32; i++) { - const idx = i - offset + for (let idx = 0; idx < 32; idx++) { + const i = idx + offset for (const [off, seq, val] of this._data) { if (seq >= res[idx][0] && i >= off && i < off + val.length) { res[idx] = [seq, val[i - off], val]