re PR java/31842 (r124338 causes java Divide_1 and pr6388 to fail)
authorIan Lance Taylor <iant@google.com>
Tue, 8 May 2007 00:29:43 +0000 (00:29 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 8 May 2007 00:29:43 +0000 (00:29 +0000)
PR java/31842
* java/lang/natString.cc (_Jv_FormatInt): Avoid undefined signed
overflow.

From-SVN: r124530

libjava/ChangeLog
libjava/java/lang/natString.cc

index 079c8e2a2088dac4b42a7d1a2fc1b35dcbfb20cf..385e26d8cdd3ac1f3555c0a13d2d61c022930322 100644 (file)
@@ -1,3 +1,9 @@
+2007-05-07  Ian Lance Taylor  <iant@google.com>
+
+       PR java/31842
+       * java/lang/natString.cc (_Jv_FormatInt): Avoid undefined signed
+       overflow.
+
 2007-05-07  Keith Seitz  <keiths@redhat.com>
 
        * classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerate.
index 39590a3e4e07489a5d294ffa38bd6ba53ed3b6b3..f177c23ccc47234fe6f87e7a4eb40ff962cbd695 100644 (file)
@@ -371,11 +371,11 @@ _Jv_FormatInt (jchar* bufend, jint num)
   if (num < 0)
     {
       isNeg = true;
-      num = -(num);
-      if (num < 0)
+      if (num != (jint) -2147483648U)
+       num = -(num);
+      else
        {
-         // Must be MIN_VALUE, so handle this special case.
-         // FIXME use 'unsigned jint' for num.
+         // Handle special case of MIN_VALUE.
          *--ptr = '8';
          num = 214748364;
        }