summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-05-26 21:32:56 -0700
committerGrant Limberg <glimberg@gmail.com>2015-05-26 21:32:56 -0700
commit09631ad3823a89dc5f0c83b064dd651abceeedb4 (patch)
treefb0ea17340355d6304e54955752e3aaeb0663283 /java
parent2d67196667ce1005c0d2023a187d24f4f5d14142 (diff)
downloadinfinitytier-09631ad3823a89dc5f0c83b064dd651abceeedb4.tar.gz
infinitytier-09631ad3823a89dc5f0c83b064dd651abceeedb4.zip
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
Diffstat (limited to 'java')
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp6
1 files changed, 3 insertions, 3 deletions
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);