mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 14:25:52 +00:00
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
This commit is contained in:
parent
42d3f6f8fd
commit
9f80187767
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user