summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
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);