From 703f9290c993423d81f67fd433ceca144c55e206 Mon Sep 17 00:00:00 2001 From: Brenton Bostick Date: Wed, 1 Feb 2023 17:44:51 -0500 Subject: [PATCH] fix missing DeleteLocalRef in loops --- java/jni/ZT_jniutils.cpp | 6 ++++++ java/jni/com_zerotierone_sdk_Node.cpp | 13 ++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/java/jni/ZT_jniutils.cpp b/java/jni/ZT_jniutils.cpp index 8c1fed768..fe5408491 100644 --- a/java/jni/ZT_jniutils.cpp +++ b/java/jni/ZT_jniutils.cpp @@ -608,6 +608,8 @@ jobject newPeer(JNIEnv *env, const ZT_Peer &peer) LOGE("exception assigning PeerPhysicalPath to array"); break; } + + env->DeleteLocalRef(path); } env->SetObjectField(peerObject, pathsField, arrayObject); @@ -809,6 +811,8 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig) LOGE("Error assigning InetSocketAddress to array"); return NULL; } + + env->DeleteLocalRef(inetAddrObj); } env->SetObjectField(vnetConfigObj, assignedAddressesField, assignedAddrArrayObj); @@ -837,6 +841,8 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig) LOGE("Error assigning VirtualNetworkRoute to array"); return NULL; } + + env->DeleteLocalRef(routeObj); } env->SetObjectField(vnetConfigObj, routesField, routesArrayObj); diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 7fe2b2cc0..b05ad1954 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -1531,15 +1531,6 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers( return NULL; } - int peerCount = peerList->peerCount * 100; - LOGV("Ensure Local Capacity: %d", peerCount); - if(env->EnsureLocalCapacity(peerCount)) - { - LOGE("EnsureLocalCapacity failed!!"); - ZT_Node_freeQueryResult(node, peerList); - return NULL; - } - jclass peerClass = lookup.findClass("com/zerotier/sdk/Peer"); if(env->ExceptionCheck() || peerClass == NULL) { @@ -1568,6 +1559,8 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers( LOGE("Error assigning Peer object to array"); break; } + + env->DeleteLocalRef(peerObj); } ZT_Node_freeQueryResult(node, peerList); @@ -1624,6 +1617,8 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_networks( LOGE("Error assigning VirtualNetworkConfig object to array"); break; } + + env->DeleteLocalRef(networkObject); } ZT_Node_freeQueryResult(node, networkList);