diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-05-26 21:32:56 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-05-26 21:32:56 -0700 |
commit | 09631ad3823a89dc5f0c83b064dd651abceeedb4 (patch) | |
tree | fb0ea17340355d6304e54955752e3aaeb0663283 /java | |
parent | 2d67196667ce1005c0d2023a187d24f4f5d14142 (diff) | |
download | infinitytier-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.cpp | 6 |
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); |