Store a global weak ref to the Java object rather than the 'address' returned by the JVM

Original committer: pedemont%us.ibm.com
Original revision: 1.4
Original date: 2004/09/30 23:34:47


git-svn-id: svn://10.0.0.236/trunk@212499 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2006-09-27 15:09:38 +00:00
parent 0a9b521699
commit aa033a1a7a

View File

@@ -519,7 +519,22 @@ XPCOM_NATIVE(FinalizeStub) (JNIEnv *env, jclass that, jobject aJavaObject)
if (isCopy)
env->ReleaseStringUTFChars(name, javaObjectName);
#endif
nsISupports* xpcomObj = RemoveXPCOMBinding(env, aJavaObject);
NS_RELEASE(xpcomObj);
void* obj = GetMatchingXPCOMObject(env, aJavaObject);
RemoveJavaXPCOMBinding(env, aJavaObject, nsnull);
nsISupports* xpcom_obj = nsnull;
if (IsXPTCStub(obj)) {
GetXPTCStubAddr(obj)->QueryInterface(NS_GET_IID(nsISupports),
(void**) &xpcom_obj);
} else {
JavaXPCOMInstance* inst = (JavaXPCOMInstance*) obj;
xpcom_obj = inst->GetInstance();
// XXX Getting some odd thread issues when calling delete. Addreffing for
// now to work around the errors.
// NS_ADDREF(inst);
delete inst;
}
NS_RELEASE(xpcom_obj);
}