OSDN Git Service

2004-04-21 Mark Wielaard <mark@klomp.org>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Apr 2004 07:19:24 +0000 (07:19 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Apr 2004 07:19:24 +0000 (07:19 +0000)
* native/jni/gtk-peer/gthread-jni.c (maybe_rethrow): Explicitly
malloc and free buf.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80948 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/jni/gtk-peer/gthread-jni.c

index 6a71bf8..4b23a1f 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-21  Mark Wielaard  <mark@klomp.org>
+
+       * native/jni/gtk-peer/gthread-jni.c (maybe_rethrow): Explicitly
+       malloc and free buf.
+
 2004-04-21  Dalibor Topic  <robilad@kaffe.org>
 
        * javax/naming/AuthenticationException.java,
index cd37fe1..b21a80c 100644 (file)
@@ -91,28 +91,40 @@ JavaVM *gdk_vm;
 static void maybe_rethrow(JNIEnv *gdk_env, char *message, char *file, int line) {
   jthrowable cause;
 
-  /* rethrow if an exception happened */
-  if ((cause = (*gdk_env)->ExceptionOccurred(gdk_env)) != NULL) {
     jstring jmessage;
-  jclass obj_class;
+    jclass obj_class;
     jobject obj;
     jmethodID ctor;
-
-    /* allocate local message in Java */
-    int len = strlen(message) + strlen(file) + 25;
-    char buf[ len ];
-    bzero(buf, len);
-    sprintf(buf, "%s (at %s:%d)", message, file, line);
-    jmessage = (*gdk_env)->NewStringUTF(gdk_env, buf);
+    int len;
+    char *buf;
+
+    /* rethrow if an exception happened */
+    if ((cause = (*gdk_env)->ExceptionOccurred(gdk_env)) != NULL)
+      {
+
+       /* allocate local message in Java */
+       len = strlen(message) + strlen(file) + 25;
+       buf = (char *) malloc(len);
+       if (buf != NULL)
+         {
+           bzero(buf, len);
+           sprintf(buf, "%s (at %s:%d)", message, file, line);
+           jmessage = (*gdk_env)->NewStringUTF(gdk_env, buf);
+           free(buf);
+         }
+       else
+         jmessage = NULL;
     
-    /* create RuntimeException wrapper object */
-    obj_class = (*gdk_env)->FindClass (gdk_env, "java/lang/RuntimeException");
-    ctor = (*gdk_env)->GetMethodID(gdk_env, obj_class, "<init>", "(Ljava/langString;Ljava/lang/Throwable)V");
-    obj = (*gdk_env)->NewObject (gdk_env, obj_class, ctor, jmessage, cause);
-
-    /* throw it */
-    (*gdk_env)->Throw(gdk_env, (jthrowable)obj);
-    }
+       /* create RuntimeException wrapper object */
+       obj_class = (*gdk_env)->FindClass (gdk_env,
+                       "java/lang/RuntimeException");
+       ctor = (*gdk_env)->GetMethodID(gdk_env, obj_class, "<init>",
+       "(Ljava/langString;Ljava/lang/Throwable)V");
+       obj = (*gdk_env)->NewObject (gdk_env, obj_class, ctor, jmessage, cause);
+
+       /* throw it */
+       (*gdk_env)->Throw(gdk_env, (jthrowable)obj);
+      }
 }
 
 /* This macro is used to include a source location in the exception message */