summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-05-28 20:37:16 -0700
committerGrant Limberg <glimberg@gmail.com>2015-05-28 20:37:16 -0700
commitb6196a53de79d566ec8b39267de5042a7f96eb90 (patch)
tree251e58529d5ced6df7af3f567bca56b9a6bac78a /java
parent58ca657da63382989432494e22976f7cb2c21f77 (diff)
downloadinfinitytier-b6196a53de79d566ec8b39267de5042a7f96eb90.tar.gz
infinitytier-b6196a53de79d566ec8b39267de5042a7f96eb90.zip
Fix DataStoreGetFunction.
Diffstat (limited to 'java')
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp
index d1ec428c..96c958e3 100644
--- a/java/jni/com_zerotierone_sdk_Node.cpp
+++ b/java/jni/com_zerotierone_sdk_Node.cpp
@@ -333,10 +333,13 @@ namespace {
if(retval > 0)
{
- env->GetByteArrayRegion(bufferObj, 0, retval, (jbyte*)buffer);
- env->GetLongArrayRegion(objectSizeObj, 0, 1, (jlong*)out_objectSize);
- env->DeleteLocalRef(bufferObj);
- env->DeleteLocalRef(objectSizeObj);
+ jbyte *data = env->GetByteArrayElements(bufferObj, NULL);
+ memcpy(buffer, data, retval);
+ env->ReleaseByteArrayElements(bufferObj, data, JNI_ABORT);
+
+ jlong *objSize = env->GetLongArrayElements(objectSizeObj, NULL);
+ *out_objectSize = (unsigned long)objSize[0];
+ env->ReleaseLongArrayElements(objectSizeObj, objSize, JNI_ABORT);
}
LOGI("Out Object Size: %lu", *out_objectSize);