lua-users home
lua-l archive

Re: [PATCH] Loop Overflow Bug Fix

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


dyngeccetor8 <dyngeccetor8@disroot.org> wrote:
> On 11/15/2017 06:48 AM, Paige DePol wrote:
>> I have produced a very small patch which only makes adjustments in lvm.c to the OP_FORLOOP and OP_FORPREP opcodes to solve the issue of the edge case where math.maxinteger or math.mininteger are used, or where the sign bit overflowed.
> 
> Well, your patch broke version detection test from KHMan.
> 
> Now I can not reproduce cycle going out of limits:
> 
>> for i = math.maxinteger, math.maxinteger do print(i) end
> 9223372036854775807
>> for i = math.maxinteger, math.maxinteger - 2, -1 do print(i) end
> 9223372036854775807
> 9223372036854775806
> 9223372036854775805
>> for i = math.mininteger, math.mininteger + 2, 1 do print(i) end
> -9223372036854775808
> -9223372036854775807
> -9223372036854775806
> 
> (Thank you for patch.)
> 
> -- Martin
Which feature detection test are you referring to? Lua features?
Couldn't one just use the normal _VERSION variable?
The examples you gave are now working as I'd expect they should be. I just
need to look into the corner cases my patch did not address (as mentioned
in reply by Roberto to my patch post).
However, even with the remaining corner cases I think the patch I provided
does seem to allow the previously "broken" loop constructs to now work with
appropriate step values around min/max integers, and loops iterating at
least once at min/max integer values.
~Paige

AltStyle によって変換されたページ (->オリジナル) /