Browse Source

Fix DataStoreGetFunction.

Grant Limberg 10 years ago
parent
commit
b6196a53de
1 changed files with 7 additions and 4 deletions
  1. 7 4
      java/jni/com_zerotierone_sdk_Node.cpp

+ 7 - 4
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);