From b6196a53de79d566ec8b39267de5042a7f96eb90 Mon Sep 17 00:00:00 2001
From: Grant Limberg <glimberg@gmail.com>
Date: Thu, 28 May 2015 20:37:16 -0700
Subject: 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 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);
-- 
cgit v1.2.3