Index: mozilla/dom/src/base/nsDOMClassInfo.cpp =================================================================== RCS file: /cvsroot/mozilla/dom/src/base/nsDOMClassInfo.cpp,v retrieving revision 1.383 diff -pU30 -r1.383 mozilla/dom/src/base/nsDOMClassInfo.cpp --- mozilla/dom/src/base/nsDOMClassInfo.cpp +++ mozilla/dom/src/base/nsDOMClassInfo.cpp @@ -5091,61 +5091,61 @@ nsDOMClassInfo::PreserveWrapper(void *aK PreservedWrapperEntry *entry = NS_STATIC_CAST(PreservedWrapperEntry*, PL_DHashTableOperate(&sPreservedWrapperTable, aKey, PL_DHASH_ADD)); if (!entry) return NS_ERROR_OUT_OF_MEMORY; NS_ASSERTION(!entry->key || (entry->key == aKey && entry->keyToWrapperFunc == aKeyToWrapperFunc && entry->participant == aParticipant && !entry->rootWhenExternallyReferenced && !aRootWhenExternallyReferenced), "preservation key already used"); entry->key = aKey; entry->keyToWrapperFunc = aKeyToWrapperFunc; entry->participant = aParticipant; entry->rootWhenExternallyReferenced = aRootWhenExternallyReferenced; if (aRootWhenExternallyReferenced) { if (!sRootWhenExternallyReferencedTable.ops && !PL_DHashTableInit(&sRootWhenExternallyReferencedTable, PL_DHashGetStubOps(), nsnull, sizeof(RootWhenExternallyReferencedEntry), 16)) { PL_DHashTableRawRemove(&sPreservedWrapperTable, entry); return NS_ERROR_OUT_OF_MEMORY; } RootWhenExternallyReferencedEntry *rwerEntry = NS_STATIC_CAST(RootWhenExternallyReferencedEntry*, PL_DHashTableOperate(&sRootWhenExternallyReferencedTable, aParticipant, PL_DHASH_ADD)); - if (!entry) { + if (!rwerEntry) { PL_DHashTableRawRemove(&sPreservedWrapperTable, entry); return NS_ERROR_OUT_OF_MEMORY; } NS_ASSERTION(rwerEntry->refcnt == 0 || rwerEntry->participant == aParticipant, "entry mismatch"); rwerEntry->participant = aParticipant; ++rwerEntry->refcnt; } return NS_OK; } static nsIXPConnectJSObjectHolder* IdentityKeyToWrapperFunc(void* aKey) { return NS_STATIC_CAST(nsIXPConnectJSObjectHolder*, aKey); } // static nsresult nsDOMClassInfo::PreserveNodeWrapper(nsIXPConnectWrappedNative *aWrapper) { nsCOMPtr participant = do_QueryInterface(aWrapper->Native()); if (!participant) // nsJSContext::PreserveWrapper needs us to null-check return NS_OK; return nsDOMClassInfo::PreserveWrapper(aWrapper, IdentityKeyToWrapperFunc, participant, PR_FALSE);