Return negative values. (#416062)

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=/branches/glib-2-12/; revision=5391
diff --git a/ChangeLog b/ChangeLog
index 820b64c..fcc5e5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2007-03-08  Matthias Clasen  <mclasen@redhat.com>
 
+	Merge from trunk:
+
+	* glib/gstrfuncs.c (g_strtoll): Return negative values.
+	(#416062)
+
+	* tests/strtoll-test.c: Add more testcases.
+
+2007-03-08  Matthias Clasen  <mclasen@redhat.com>
+
 	* glib/gthreadpool.c: Remove leftover debug spew.
 
 2007-03-07  Matthias Clasen  <mclasen@redhat.com>
diff --git a/glib/gstrfuncs.c b/glib/gstrfuncs.c
index 61d11ed..7786f10 100644
--- a/glib/gstrfuncs.c
+++ b/glib/gstrfuncs.c
@@ -813,6 +813,8 @@
       errno = ERANGE;
       return G_MAXINT64;
     }
+  else if (negative)
+    return - (gint64) result;
   else
     return (gint64) result;
 }
diff --git a/tests/strtoll-test.c b/tests/strtoll-test.c
index 6c1de3f..43005d5 100644
--- a/tests/strtoll-test.c
+++ b/tests/strtoll-test.c
@@ -62,6 +62,10 @@
   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;
 }