Bug 568251 - [GTK] Memory corruption in Display.initializeSystemSettings
Using java's boolean[] to interface to 'gboolean' is always wrong,
because 'jboolean' is 1 byte, and 'gboolean' is 4 bytes.
Change-Id: I44c590bb98a8c54f9d5ece9c8938e208cabdd04a
Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
index 6c225fd..2f968a1 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os.c
@@ -16162,23 +16162,6 @@
}
#endif
-#ifndef NO_g_1object_1get__J_3B_3ZJ
-JNIEXPORT void JNICALL OS_NATIVE(g_1object_1get__J_3B_3ZJ)
- (JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jbooleanArray arg2, jlong arg3)
-{
- jbyte *lparg1=NULL;
- jboolean *lparg2=NULL;
- OS_NATIVE_ENTER(env, that, g_1object_1get__J_3B_3ZJ_FUNC);
- if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
- if (arg2) if ((lparg2 = (*env)->GetBooleanArrayElements(env, arg2, NULL)) == NULL) goto fail;
- g_object_get((GObject *)arg0, (const gchar *)lparg1, lparg2, (const gchar *)NULL);
-fail:
- if (arg2 && lparg2) (*env)->ReleaseBooleanArrayElements(env, arg2, lparg2, 0);
- if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, JNI_ABORT);
- OS_NATIVE_EXIT(env, that, g_1object_1get__J_3B_3ZJ_FUNC);
-}
-#endif
-
#ifndef NO_g_1object_1get_1qdata
JNIEXPORT jlong JNICALL OS_NATIVE(g_1object_1get_1qdata)
(JNIEnv *env, jclass that, jlong arg0, jint arg1)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
index f9ac392..df1f03e 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.c
@@ -1298,7 +1298,6 @@
"g_1menu_1new",
"g_1object_1get__J_3B_3IJ",
"g_1object_1get__J_3B_3JJ",
- "g_1object_1get__J_3B_3ZJ",
"g_1object_1get_1qdata",
"g_1object_1new",
"g_1object_1notify",
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
index f35f27e..8d221e6 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/os_stats.h
@@ -1272,7 +1272,6 @@
g_1menu_1new_FUNC,
g_1object_1get__J_3B_3IJ_FUNC,
g_1object_1get__J_3B_3JJ_FUNC,
- g_1object_1get__J_3B_3ZJ_FUNC,
g_1object_1get_1qdata_FUNC,
g_1object_1new_FUNC,
g_1object_1notify_FUNC,
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
index 65d56e0..2da3581 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/OS.java
@@ -1089,12 +1089,6 @@
* @param first_property_name cast=(const gchar *),flags=no_out
* @param terminator cast=(const gchar *),flags=sentinel
*/
-public static final native void g_object_get(long object, byte[] first_property_name, boolean[] value, long terminator);
-/**
- * @param object cast=(GObject *)
- * @param first_property_name cast=(const gchar *),flags=no_out
- * @param terminator cast=(const gchar *),flags=sentinel
- */
public static final native void g_object_get(long object, byte[] first_property_name, int[] value, long terminator);
/**
* @param object cast=(GObject *)
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
index 6452bff..f320314 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
@@ -3761,11 +3761,11 @@
OS.g_signal_connect(GTK.gtk_settings_get_default (), OS.notify_theme_change, signalProc, STYLE_UPDATED);
}
- boolean[] flag = new boolean[1];
+ int[] flag = new int[1];
long settings = GTK.gtk_settings_get_default();
OS.g_object_get(settings, GTK.gtk_entry_select_on_focus, flag, 0);
- entrySelectOnFocus = flag[0];
+ entrySelectOnFocus = (flag[0] != 0);
}
void initializeWidgetTable () {