I found what seems like a bug in the code when it uses v.wrapping_add(1) > 0 when v is a usize-- because the only way for this condition to be false is for v to be usize::MAX -- and this will not be consistent between x32 and x64 versions. Moreover, there is even a case of wrapping_add(2) -- which would only pass if the original is usize::MAX-1.
Given all this, this expression does not make any sense, and should be replaced with m.alloc_cell(num_bytes + 2):
Reworked hq.rs to be simpler.
I found what seems like a bug in the code when it uses
v.wrapping_add(1) > 0
whenv
is ausize
-- because the only way for this condition to be false is forv
to beusize::MAX
-- and this will not be consistent between x32 and x64 versions. Moreover, there is even a case ofwrapping_add(2)
-- which would only pass if the original isusize::MAX-1
.Given all this, this expression does not make any sense, and should be replaced with
m.alloc_cell(num_bytes + 2)
: