lua-users home
lua-l archive

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

Andrew Gorges wrote:
Was the argument 0xFFFFFFFF originally derived from a literal?

If so, I'll hazard a guess that the problem happens in the Lua compiler,
compile time, when the parser converts the string token 0xFFFFFFFF into a

If your code contains the string "0xFFFFFFFF", try replacing it with
"4294967295" or "2^32-1" and see what happens. If it then works, you know
that the problem isn't in bitlib itself.

I was using a numeric literal.  I tried the above constants and here
are the results:

require "bit"

print(, 0xFFFFFFFF))
-- displays 0

print(, 4294967295))
-- displays 0

print(, 2^32 -1))
-- displays 0

Even more fascinating...

> print(bit.cast(0x7ffffffe))
> print(bit.cast(0x7fffffff))
> print(bit.cast(0x80000000))
> print(bit.cast(0x80000011))
> print(bit.cast(-2147483647))
> print(bit.cast(-2147483648))
> print(bit.cast(-2147483649))
> print(bit.cast(-2147483700))

But TOBIT() appears to work fine in MinGW, I failed to reproduce the problem with some rudimentary testing. LfW's bit.dll uses MSVCR80.dll, so I'll leave it to others to debug this thing...

Kein-Hong Man (esq.)
Kuala Lumpur, Malaysia