The code in java_lang_Double.c was crashing with my JVM (kissme) because it was 
failing to recognise the infinity values.

The following patch fixes the crash, but there are still many mauve failures (which 
might be causes by kissme or classpath)

The comparison was failing even though the two values have the same binary value (when 
printed out in gdb).

Index: native/jni/java-lang/java_lang_Double.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/java-lang/java_lang_Double.c,v
retrieving revision 1.8
diff -u -r1.8 java_lang_Double.c
--- native/jni/java-lang/java_lang_Double.c     22 Jan 2002 22:27:02 -0000      1.8
+++ native/jni/java-lang/java_lang_Double.c     9 Feb 2002 19:25:11 -0000
@@ -149,6 +149,9 @@
   char *s, *d;
   int i;
 
+  memset(buffer, 0, sizeof(buffer));
+  memset(result, 0, sizeof(result));
+
 #ifdef DEBUG
   fprintf (stderr, "java.lang.Double.toString (%g)\n", value);
 #endif
@@ -156,10 +159,10 @@
   if ((*env)->CallStaticBooleanMethod(env, cls, isNaNID, value))
     return (*env)->NewStringUTF(env, "NaN");
   
-  if (value == POSITIVE_INFINITY)
+  if ((long long) value == (long long) POSITIVE_INFINITY)
     return (*env)->NewStringUTF(env, "Infinity");
 
-  if (value == NEGATIVE_INFINITY)
+  if ((long long) value == (long long) NEGATIVE_INFINITY)
     return (*env)->NewStringUTF(env, "-Infinity");
 
   _dtoa (value, 0, 20, &decpt, &sign, NULL, buffer, (int)isFloat);

_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath

Reply via email to