From 2b1c3925034b565de38f1478a3482ed23672b625 Mon Sep 17 00:00:00 2001 From: Dylan Bannon Date: Fri, 1 Sep 2023 12:36:29 -0400 Subject: [PATCH 1/2] call C++ destructor instead of free --- java/com_spotify_voyager_jni_Index.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com_spotify_voyager_jni_Index.cpp b/java/com_spotify_voyager_jni_Index.cpp index 5c510704..c2e2a2a9 100644 --- a/java/com_spotify_voyager_jni_Index.cpp +++ b/java/com_spotify_voyager_jni_Index.cpp @@ -766,7 +766,8 @@ void Java_com_spotify_voyager_jni_Index_nativeDestructor(JNIEnv *env, jobject self) { try { if (Index *index = getHandle(env, self, true)) { - free(index); + delete index; + setHandle(env, self, nullptr); } } catch (std::exception const &e) { if (!env->ExceptionCheck()) { From 193c4362c80de35e69299f98d83f17d6e370ba50 Mon Sep 17 00:00:00 2001 From: Dylan Bannon Date: Fri, 1 Sep 2023 12:39:46 -0400 Subject: [PATCH 2/2] call desctuctor on GC --- java/src/main/java/com/spotify/voyager/jni/Index.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/java/src/main/java/com/spotify/voyager/jni/Index.java b/java/src/main/java/com/spotify/voyager/jni/Index.java index a518aad6..e48baee1 100644 --- a/java/src/main/java/com/spotify/voyager/jni/Index.java +++ b/java/src/main/java/com/spotify/voyager/jni/Index.java @@ -277,6 +277,15 @@ public void close() throws IOException { nativeDestructor(); } + @Override + protected void finalize() throws Throwable { + try { + nativeDestructor(); + } finally { + super.finalize(); + } + } + private native void nativeConstructor( SpaceType space, int numDimensions,