Make sure everything is still init'd in FinalizeStub

git-svn-id: svn://10.0.0.236/trunk@168160 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2005-01-21 22:21:47 +00:00
parent 1f42610a2a
commit 325ff720b9
3 changed files with 19 additions and 10 deletions

View File

@@ -481,10 +481,19 @@ XPCOMPRIVATE_NATIVE(FinalizeStub) (JNIEnv *env, jclass that,
env->ReleaseStringUTFChars(name, javaObjectName);
#endif
void* obj = gBindings->GetXPCOMObject(env, aJavaObject);
NS_ASSERTION(!IsXPTCStub(obj),
"Expecting JavaXPCOMInstance, got nsJavaXPTCStub");
gBindings->RemoveBinding(env, aJavaObject, nsnull);
delete (JavaXPCOMInstance*) obj;
// Due to Java's garbage collection, this finalize statement may get called
// after FreeJavaGlobals(). So check to make sure that everything is still
// initialized.
if (gJavaXPCOMInitialized) {
void* obj = gBindings->GetXPCOMObject(env, aJavaObject);
NS_ASSERTION(obj != nsnull, "No matching XPCOM obj in FinalizeStub");
if (obj) {
NS_ASSERTION(!IsXPTCStub(obj),
"Expecting JavaXPCOMInstance, got nsJavaXPTCStub");
gBindings->RemoveBinding(env, aJavaObject, nsnull);
delete (JavaXPCOMInstance*) obj;
}
}
}