diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-05-28 20:37:16 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-05-28 20:37:16 -0700 |
commit | b6196a53de79d566ec8b39267de5042a7f96eb90 (patch) | |
tree | 251e58529d5ced6df7af3f567bca56b9a6bac78a /java | |
parent | 58ca657da63382989432494e22976f7cb2c21f77 (diff) | |
download | infinitytier-b6196a53de79d566ec8b39267de5042a7f96eb90.tar.gz infinitytier-b6196a53de79d566ec8b39267de5042a7f96eb90.zip |
Fix DataStoreGetFunction.
Diffstat (limited to 'java')
-rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 11 |
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); |