Browse Source

fix missing DeleteLocalRef in loops

Brenton Bostick 2 years ago
parent
commit
703f9290c9
2 changed files with 10 additions and 9 deletions
  1. 6 0
      java/jni/ZT_jniutils.cpp
  2. 4 9
      java/jni/com_zerotierone_sdk_Node.cpp

+ 6 - 0
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);

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