From b6196a53de79d566ec8b39267de5042a7f96eb90 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Thu, 28 May 2015 20:37:16 -0700 Subject: [PATCH] Fix DataStoreGetFunction. --- java/jni/com_zerotierone_sdk_Node.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index d1ec428c9..96c958e3e 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);