From 09631ad3823a89dc5f0c83b064dd651abceeedb4 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 26 May 2015 21:32:56 -0700 Subject: fix datastore get call in JNI Just delete the local reference rather than do an array delete. Array delete was causing a crash on loading network config files. Deleting the local ref works fine, though, as it still lets the JVM garbage collecter know that the native code is done with the array --- java/jni/com_zerotierone_sdk_Node.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'java') diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 50b979ce..b0e2a00c 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -333,10 +333,10 @@ namespace { if(retval > 0) { - env->GetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer); + env->GetByteArrayRegion(bufferObj, 0, retval, (jbyte*)buffer); env->GetLongArrayRegion(objectSizeObj, 0, 1, (jlong*)out_objectSize); - env->ReleaseByteArrayElements(bufferObj, (jbyte*)buffer, 0); - env->ReleaseLongArrayElements(objectSizeObj, (jlong*)out_objectSize, 0); + env->DeleteLocalRef(bufferObj); + env->DeleteLocalRef(objectSizeObj); } LOGI("Out Object Size: %lu", *out_objectSize); -- cgit v1.2.3