atoi and undefined usage

André Johansen andrejoh at
Thu May 27 15:02:58 CDT 2004

The atoi() function has undefined usage when trying to convert numbers
outside the range of int.

When parsing numbers >= 2^31, GNU libc seems to truncate the number to
2^31-1; however, with MSVC, such a number would wrap, and when cast to
an unsigned integer, numbers within an unsigned int are preserved.

Should Wine care about such undefined behaviour?  Currently, it seems
Wine uses the GNU libc implementation, giving a different result than
when running in Windows.

(In my case, an IP address was given as a string, and ended up as
"" when running in Wine.  I've now fixed that specific
bug in the source code, but with other programs, that might not be an

Try   Anarchy  Online
Netiquette guidelines
How to quote properly
Hvordan sitere riktig

More information about the wine-devel mailing list