This patch fixes some seg faults fitzsim found when running a couple of
Sun's demo applets. I have added a link to these demos on the wiki.

2006-06-20  Lillian Angel  <[EMAIL PROTECTED]>

        * gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
        (create): Added check to prevent Seg Fault. Should not
        set the label if it is null.
        * gnu/java/awt/peer/gtk/GtkLabelPeer.java
        (setText): Changed to be a non-native function. Calls
        setNativeText if the String parameter is non-null.
        (setNativeText): Replaces old native setText function.
        * include/gnu_java_awt_peer_gtk_GtkLabelPeer.h: Regenerated.
        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c
        (Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText): Removed.
        Replaced by     
        Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeText.
        (Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeText): 
        Replaced Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText.

Index: gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,v
retrieving revision 1.24
diff -u -r1.24 GtkCheckboxPeer.java
--- gnu/java/awt/peer/gtk/GtkCheckboxPeer.java	22 Feb 2006 14:47:50 -0000	1.24
+++ gnu/java/awt/peer/gtk/GtkCheckboxPeer.java	20 Jun 2006 20:32:16 -0000
@@ -78,7 +78,10 @@
     create (old_group);
     currentState = checkbox.getState();
     gtkToggleButtonSetActive(currentState);
-    gtkButtonSetLabel (checkbox.getLabel ());
+    
+    String label = checkbox.getLabel();
+    if (label != null)
+      gtkButtonSetLabel(label);
   }
 
   /**
Index: gnu/java/awt/peer/gtk/GtkLabelPeer.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkLabelPeer.java,v
retrieving revision 1.25
diff -u -r1.25 GtkLabelPeer.java
--- gnu/java/awt/peer/gtk/GtkLabelPeer.java	13 Feb 2006 18:57:03 -0000	1.25
+++ gnu/java/awt/peer/gtk/GtkLabelPeer.java	20 Jun 2006 20:32:16 -0000
@@ -56,7 +56,7 @@
 
   native void nativeSetAlignment (float alignment);
 
-  public native void setText(String text);
+  public native void setNativeText(String text);
   native void setNativeBounds (int x, int y, int width, int height);
 
   // Because this is a composite widget, we need to retrieve the
@@ -69,6 +69,12 @@
     create (label.getText (), getGtkAlignment (label.getAlignment ()));
   }
 
+  public void setText(String text)
+  {
+    if (text != null)
+      setNativeText(text);
+  }
+  
   public GtkLabelPeer (Label l)
   {
     super (l);
Index: include/gnu_java_awt_peer_gtk_GtkLabelPeer.h
===================================================================
RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h,v
retrieving revision 1.11
diff -u -r1.11 gnu_java_awt_peer_gtk_GtkLabelPeer.h
--- include/gnu_java_awt_peer_gtk_GtkLabelPeer.h	30 Apr 2006 10:37:36 -0000	1.11
+++ include/gnu_java_awt_peer_gtk_GtkLabelPeer.h	20 Jun 2006 20:32:17 -0000
@@ -13,7 +13,7 @@
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_create (JNIEnv *env, jobject, jstring, jfloat);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_gtkWidgetModifyFont (JNIEnv *env, jobject, jstring, jint, jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_nativeSetAlignment (JNIEnv *env, jobject, jfloat);
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText (JNIEnv *env, jobject, jstring);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeText (JNIEnv *env, jobject, jstring);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeBounds (JNIEnv *env, jobject, jint, jint, jint, jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_gtkWidgetGetPreferredDimensions (JNIEnv *env, jobject, jintArray);
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c,v
retrieving revision 1.17
diff -u -r1.17 gnu_java_awt_peer_gtk_GtkLabelPeer.c
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c	12 Aug 2005 22:49:42 -0000	1.17
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c	20 Jun 2006 20:32:17 -0000
@@ -147,7 +147,7 @@
 }
 
 JNIEXPORT void JNICALL
-Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText
+Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeText
   (JNIEnv *env, jobject obj, jstring text)
 {
   const char *str;

Reply via email to