From e974785db099fc2d14e1ccee4dc0d544d0c2b2ff Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 8 May 2007 00:30:27 +0000 Subject: [PATCH] re PR java/31842 (r124338 causes java Divide_1 and pr6388 to fail) PR java/31842 * java/lang/natString.cc (_Jv_FormatInt): Avoid undefined signed overflow. From-SVN: r124531 --- libjava/ChangeLog | 6 ++++++ libjava/java/lang/natString.cc | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 6e23f21ac845..aa4630aecdd7 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2007-05-07 Ian Lance Taylor + + PR java/31842 + * java/lang/natString.cc (_Jv_FormatInt): Avoid undefined signed + overflow. + 2007-03-25 David Daney PR libgcj/31228 diff --git a/libjava/java/lang/natString.cc b/libjava/java/lang/natString.cc index 1a49bf798097..495a356a1a7d 100644 --- a/libjava/java/lang/natString.cc +++ b/libjava/java/lang/natString.cc @@ -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; }