Return negative values. (#416062)
authorMatthias Clasen <mclasen@redhat.com>
Fri, 9 Mar 2007 03:40:43 +0000 (03:40 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Fri, 9 Mar 2007 03:40:43 +0000 (03:40 +0000)
2007-03-08  Matthias Clasen  <mclasen@redhat.com>

        * glib/gstrfuncs.c (g_strtoll): Return negative values.
        (#416062)

        * tests/strtoll-test.c: Add more testcases.

svn path=/trunk/; revision=5390

ChangeLog
glib/gstrfuncs.c
tests/strtoll-test.c

index 66b1403..d43bae9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-03-08  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gstrfuncs.c (g_strtoll): Return negative values.
+       (#416062)
+
+       * tests/strtoll-test.c: Add more testcases.
+
 2007-03-06  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gstring.c (g_str_equal): Clarify docs.  (#364026, 
index 7ab4d64..bf2ba93 100644 (file)
@@ -842,6 +842,8 @@ g_ascii_strtoll (const gchar *nptr,
       errno = ERANGE;
       return G_MAXINT64;
     }
+  else if (negative)
+    return - (gint64) result;
   else
     return (gint64) result;
 }
index 6c1de3f..43005d5 100644 (file)
@@ -62,6 +62,10 @@ main (int argc, char *argv[])
   test_int64 ("9223372036854775808", "", 10, G_MAXINT64, ERANGE);
   test_int64 ("-9223372036854775808", "", 10, G_MININT64, 0);
   test_int64 ("-9223372036854775809", "", 10, G_MININT64, ERANGE);
+  test_int64 ("32768", "", 10, 32768, 0);
+  test_int64 ("-32768", "", 10, -32768, 0);
+  test_int64 ("001", "", 10, 1, 0);
+  test_int64 ("-001", "", 10, -1, 0);
 
   return 0;
 }