Subject: libglib2.0-0: function g_ascii_strtoll is broken Package: libglib2.0-0 Version: 2.12.4-2 Severity: normal
*** Please type your report below this line *** g_ascii_strtoll is broken in 2.12.4, which comes streamline with Etch. Patch for this is included. The implementation has been changed (I don't know exactly when) to cope with errors while converting negative values. The proposed patch to glib/gstrfuncs.c "upgrades" the function to the correct implementation that can be found, for example, in 2.16.3. Tests for it were added as well. In particular, there are more tests than in 2.16.3 (including those present in 2.16.3, anyway), because two tests for near-the-limit values were added. If you execute the patched test file in a non-patched system, you'll get an error. Cheers, Flavio Poletti. -- BEGIN OF PATCH -- diff broken/glib/gstrfuncs.c patched/glib/gstrfuncs.c --- broken/glib/gstrfuncs.c +++ patched/glib/gstrfuncs.c @@ -813,6 +813,8 @@ errno = ERANGE; return G_MAXINT64; } + else if (negative) + return - (gint64) result; else return (gint64) result; } diff broken/tests/strtoll-test.c patched/tests/strtoll-test.c --- broken/tests/strtoll-test.c +++ patched/tests/strtoll-test.c @@ -58,8 +58,14 @@ test_uint64 ("-1", "", 10, G_MAXUINT64, 0); test_int64 ("0", "", 10, 0, 0); + test_int64 ("42", "", 10, 42, 0); + test_int64 ("-42", "", 10, -42, 0); + test_int64 ("32768", "", 10, 32768, 0); + test_int64 ("-32768", "", 10, -32768, 0); + test_int64 ("9223372036854775806", "", 10, G_MAXINT64 - 1, 0); test_int64 ("9223372036854775807", "", 10, G_MAXINT64, 0); test_int64 ("9223372036854775808", "", 10, G_MAXINT64, ERANGE); + test_int64 ("-9223372036854775807", "", 10, G_MININT64 + 1, 0); test_int64 ("-9223372036854775808", "", 10, G_MININT64, 0); test_int64 ("-9223372036854775809", "", 10, G_MININT64, ERANGE); -- END OF PATCH -- -- System Information: Debian Release: 4.0 APT prefers stable APT policy: (500, 'stable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.18-6-686 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Versions of packages libglib2.0-0 depends on: ii libc6 2.3.6.ds1-13etch5 GNU C Library: Shared libraries Versions of packages libglib2.0-0 recommends: ii libglib2.0-data 2.12.4-2 Common files for GLib library -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]