[java-atk-wrapper: 1/2] Clean object name when getAccessibleName returns null



commit 07a2194abfab2d423b0bb89e3f9cf8b6d078d3e8
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date:   Mon Apr 1 22:04:39 2019 +0200

    Clean object name when getAccessibleName returns null
    
    If getAccessibleName() returns null, jaw_object_get_name would release
    the string and delete the global reference, but not clear the
    corresponding pointers. Another call to jaw_object_get_name() would then
    try to release them again.
    
    We thus need to clear the pointers, just like jaw_object_finalize()
    does.

 jni/src/jawobject.c | 4 ++++
 1 file changed, 4 insertions(+)
---
diff --git a/jni/src/jawobject.c b/jni/src/jawobject.c
index bef6fe3..d26f69f 100644
--- a/jni/src/jawobject.c
+++ b/jni/src/jawobject.c
@@ -296,6 +296,8 @@ jaw_object_get_name (AtkObject *atk_obj)
   {
     (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
     (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
+    jaw_obj->jstrName = NULL;
+    atk_obj->name = NULL;
   }
 
   if (jstr != NULL)
@@ -329,6 +331,8 @@ static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name)
   {
     (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
     (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
+    jaw_obj->jstrName = NULL;
+    atk_obj->name = NULL;
   }
 
   if (jstr != NULL)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]