summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2024-05-12 20:24:19 +0800
committerPo Lu <luangruo@yahoo.com>2024-05-12 20:24:19 +0800
commit86d196c71d763ae81229e7e1eb2c6e37d0456f06 (patch)
treecdd109f0c88de58606399efe977b18fd844cf3c8
parentea98a6af2f30eccfed3e152149c6a039bd16ff33 (diff)
downloademacs-86d196c71d763ae81229e7e1eb2c6e37d0456f06.tar.gz
emacs-86d196c71d763ae81229e7e1eb2c6e37d0456f06.tar.bz2
emacs-86d196c71d763ae81229e7e1eb2c6e37d0456f06.zip
Properly deinitialize directory cursors on closedir
* src/androidvfs.c (android_saf_tree_closedir): Call cursor.close, for deleting the local reference to enable its garbage collection is not sufficient to release all related resources.
-rw-r--r--src/androidvfs.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/androidvfs.c b/src/androidvfs.c
index 004abd62518..c0bd86e54b8 100644
--- a/src/androidvfs.c
+++ b/src/androidvfs.c
@@ -5562,6 +5562,10 @@ android_saf_tree_closedir (struct android_vdir *vdir)
free (dir->name);
/* Yes, DIR->cursor is a local reference. */
+ (*android_java_env)->CallVoidMethod (android_java_env,
+ dir->cursor,
+ cursor_class.close);
+ (*android_java_env)->ExceptionClear (android_java_env);
ANDROID_DELETE_LOCAL_REF (dir->cursor);
/* If the ``directory file descriptor'' has been opened, close