mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8187450: JNI local refs exceeds capacity warning in NetworkInterface::getAll
Reviewed-by: chegar, dfuchs, aph
This commit is contained in:
parent
0abbfb2fc5
commit
ba504fcee8
3 changed files with 22 additions and 2 deletions
|
@ -503,6 +503,7 @@ JNIEXPORT jobjectArray JNICALL Java_java_net_NetworkInterface_getAll
|
|||
|
||||
// put the NetworkInterface into the array
|
||||
(*env)->SetObjectArrayElement(env, netIFArr, arr_index++, netifObj);
|
||||
(*env)->DeleteLocalRef(env, netifObj);
|
||||
|
||||
curr = curr->next;
|
||||
}
|
||||
|
@ -766,12 +767,14 @@ static jobject createNetworkInterface(JNIEnv *env, netif *ifs) {
|
|||
((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr));
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
(*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj);
|
||||
(*env)->DeleteLocalRef(env, ia2Obj);
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
(*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask);
|
||||
(*env)->SetObjectArrayElement(env, bindArr, bind_index++, ibObj);
|
||||
(*env)->DeleteLocalRef(env, ibObj);
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -800,12 +803,14 @@ static jobject createNetworkInterface(JNIEnv *env, netif *ifs) {
|
|||
(*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj);
|
||||
(*env)->SetShortField(env, ibObj, ni_ib4maskID, addrP->mask);
|
||||
(*env)->SetObjectArrayElement(env, bindArr, bind_index++, ibObj);
|
||||
(*env)->DeleteLocalRef(env, ibObj);
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
(*env)->SetObjectArrayElement(env, addrArr, addr_index++, iaObj);
|
||||
(*env)->DeleteLocalRef(env, iaObj);
|
||||
addrP = addrP->next;
|
||||
}
|
||||
|
||||
|
@ -838,6 +843,11 @@ static jobject createNetworkInterface(JNIEnv *env, netif *ifs) {
|
|||
(*env)->SetObjectField(env, netifObj, ni_bindsID, bindArr);
|
||||
(*env)->SetObjectField(env, netifObj, ni_childsID, childArr);
|
||||
|
||||
(*env)->DeleteLocalRef(env, name);
|
||||
(*env)->DeleteLocalRef(env, addrArr);
|
||||
(*env)->DeleteLocalRef(env, bindArr);
|
||||
(*env)->DeleteLocalRef(env, childArr);
|
||||
|
||||
// return the NetworkInterface
|
||||
return netifObj;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue