Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FS#948 - lua: on 64bit targets integer number truncation may occur #5896

Open
openwrt-bot opened this issue Aug 3, 2017 · 2 comments
Open

FS#948 - lua: on 64bit targets integer number truncation may occur #5896

openwrt-bot opened this issue Aug 3, 2017 · 2 comments
Labels
flyspray packages

Comments

@openwrt-bot
Copy link

@openwrt-bot openwrt-bot commented Aug 3, 2017

vcalvis:

On 64bit target implementations (eg x86_64) and with LNUM on int32
mode (default), assignation of an integer number greater than
UINT_MAX (ie 4294967295), but lesser or equal than UINT_MAX +
0x7FFFFFFF + 1 (ie 6442450943) to a variable does result in
truncation of the final value stored in memory.

E.g.:
> n=4294967296; print(n)
0
> n=6442450943; print(n)
2147483647

Cause:
LNUM does perform a C-Style cast in the intermediate function wrapper
used to check for the fitness of numbers. This cast is not only unnecessary
but also brings on undefined behaviour on 64bit target implementations
where INT's and LONG's are of size 32 and 64bit respectively.

Fix:
Removal of the unnecessary cast in wrapper does bring back the 'overflow detection'.

Regards, Víctor Calvís.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flyspray packages
Projects
None yet
Development

No branches or pull requests

2 participants