Some modules functions (from hash and math) can access multiple memory blocks, as long as those are contiguous. For example, when hashing between offsets 0..1000, blocks that cover this range will be fetched.
This logic however is a bit buggy on the boundary: if the fetched range ends exactly at the end of a block, the iteration keeps going instead of ending. This can result in two situations:
The next block is contiguous: it is then fetched.
if the fetch fails, the function fails (and return undefined)
if the fetch succeeds, we read 0 bytes from it and end the iteration, so a useless fetch was done.
The next block is not contiguous: the function fails (and return undefined).
This is fixed by modifying the condition to detect if there are still more bytes to fetch.
Some modules functions (from hash and math) can access multiple memory blocks, as long as those are contiguous. For example, when hashing between offsets 0..1000, blocks that cover this range will be fetched.
This logic however is a bit buggy on the boundary: if the fetched range ends exactly at the end of a block, the iteration keeps going instead of ending. This can result in two situations:
This is fixed by modifying the condition to detect if there are still more bytes to fetch.