[java-atk-wrapper: 1/2] protect against jAccContext being NULL
- From: Samuel Thibault <sthibaul src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper: 1/2] protect against jAccContext being NULL
- Date: Wed, 1 May 2019 21:46:38 +0000 (UTC)
commit 3e1f6d1f3aab6c553fa4f3a3c60020010a29ab29
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date: Mon Apr 1 21:38:28 2019 +0200
protect against jAccContext being NULL
As seen with netbeans (see https://bugs.debian.org/798273), jAccContext may
be NULL (getAccessibleContext() is allowed to return null), so we need to
protect the ATK wrapper against this.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=754688
jni/src/AtkWrapper.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 72 insertions(+), 6 deletions(-)
---
diff --git a/jni/src/AtkWrapper.c b/jni/src/AtkWrapper.c
index 1322d45..de885d9 100644
--- a/jni/src/AtkWrapper.c
+++ b/jni/src/AtkWrapper.c
@@ -254,6 +254,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_focusNotify(JNIEnv *jniEnv,
jclass jClass,
jobject jAccContext)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(focus_notify_handler, para);
@@ -330,7 +335,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowOpen(JNIEnv *jniEnv,
jobject jAccContext,
jboolean jIsToplevel)
{
-
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
@@ -408,6 +417,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowClose(JNIEnv *jniEnv,
jobject jAccContext,
jboolean jIsToplevel)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
para->is_toplevel = (jIsToplevel == JNI_TRUE) ? TRUE : FALSE;
@@ -458,6 +472,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMinimize(JNIEnv *jniEnv,
jclass jClass,
jobject jAccContext)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(window_minimize_handler, para);
@@ -507,6 +526,11 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowMaximize(JN
jclass jClass,
jobject jAccContext)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac );
g_idle_add(window_maximize_handler, para);
@@ -556,7 +580,11 @@ JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowRestore(JNI
jclass jClass,
jobject jAccContext)
{
-
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(window_restore_handler, para);
@@ -603,8 +631,13 @@ window_activate_handler (gpointer p)
JNIEXPORT void JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowActivate(JNIEnv *jniEnv,
jclass jClass,
- jobject jAccContext) {
-
+ jobject jAccContext)
+{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(window_activate_handler, para);
@@ -654,7 +687,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowDeactivate(JNIEnv *jniEnv,
jclass jClass,
jobject jAccContext)
{
-
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(window_deactivate_handler, para);
@@ -705,7 +742,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_windowStateChange(JNIEnv *jniEnv
jclass jClass,
jobject jAccContext)
{
-
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(window_state_change_handler, para);
@@ -1009,6 +1050,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_emitSignal(JNIEnv *jniEnv,
jint id,
jobjectArray args)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
jobjectArray global_args = (jobjectArray)(*jniEnv)->NewGlobalRef(jniEnv, args);
CallbackPara *para = alloc_callback_para(global_ac);
@@ -1064,6 +1110,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_objectStateChange(JNIEnv *jniEnv
jobject state,
jboolean value)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
AtkStateType state_type = jaw_util_get_atk_state_type_from_java_state( jniEnv, state );
@@ -1128,6 +1179,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentAdded(JNIEnv *jniEnv,
jclass jClass,
jobject jAccContext)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(component_added_handler, para);
@@ -1187,6 +1243,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_componentRemoved(JNIEnv *jniEnv,
jclass jClass,
jobject jAccContext)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(component_removed_handler, para);
@@ -1248,6 +1309,11 @@ JNICALL Java_org_GNOME_Accessibility_AtkWrapper_boundsChanged(JNIEnv *jniEnv,
jclass jClass,
jobject jAccContext)
{
+ if (!jAccContext) {
+ if (jaw_debug)
+ g_warning("%s: jAccContext == NULL", __func__);
+ return;
+ }
jobject global_ac = (*jniEnv)->NewGlobalRef(jniEnv, jAccContext);
CallbackPara *para = alloc_callback_para(global_ac);
g_idle_add(bounds_changed_handler, para);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]