fix missing DeleteLocalRef in loops

This commit is contained in:
Brenton Bostick 2023-02-01 17:44:51 -05:00
parent dd1b52c7d9
commit 703f9290c9
2 changed files with 10 additions and 9 deletions

View File

@ -608,6 +608,8 @@ jobject newPeer(JNIEnv *env, const ZT_Peer &peer)
LOGE("exception assigning PeerPhysicalPath to array"); LOGE("exception assigning PeerPhysicalPath to array");
break; break;
} }
env->DeleteLocalRef(path);
} }
env->SetObjectField(peerObject, pathsField, arrayObject); env->SetObjectField(peerObject, pathsField, arrayObject);
@ -809,6 +811,8 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
LOGE("Error assigning InetSocketAddress to array"); LOGE("Error assigning InetSocketAddress to array");
return NULL; return NULL;
} }
env->DeleteLocalRef(inetAddrObj);
} }
env->SetObjectField(vnetConfigObj, assignedAddressesField, assignedAddrArrayObj); env->SetObjectField(vnetConfigObj, assignedAddressesField, assignedAddrArrayObj);
@ -837,6 +841,8 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
LOGE("Error assigning VirtualNetworkRoute to array"); LOGE("Error assigning VirtualNetworkRoute to array");
return NULL; return NULL;
} }
env->DeleteLocalRef(routeObj);
} }
env->SetObjectField(vnetConfigObj, routesField, routesArrayObj); env->SetObjectField(vnetConfigObj, routesField, routesArrayObj);

View File

@ -1531,15 +1531,6 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers(
return NULL; 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"); jclass peerClass = lookup.findClass("com/zerotier/sdk/Peer");
if(env->ExceptionCheck() || peerClass == NULL) 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"); LOGE("Error assigning Peer object to array");
break; break;
} }
env->DeleteLocalRef(peerObj);
} }
ZT_Node_freeQueryResult(node, peerList); 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"); LOGE("Error assigning VirtualNetworkConfig object to array");
break; break;
} }
env->DeleteLocalRef(networkObject);
} }
ZT_Node_freeQueryResult(node, networkList); ZT_Node_freeQueryResult(node, networkList);