Comment on attachment 120412 patch (add Alecf's comments)
+ if (!observer) { + // this weak referenced observer went away, remove it from the list + nsresult rv = mGConf->NotifyRemove(aPrefAtom, pData); + if (NS_SUCCEEDED(rv)) { + mObservers->RemoveElement(pData); + NS_RELEASE(pData->observer); + nsMemory::Free(pData); + } + return; + } + } + else + observer = do_QueryInterface(pData->observer); + + observer->Observe(NS_STATIC_CAST(nsIPrefBranch *, this), + NS_SYSTEMPREF_PREFCHANGE_TOPIC_ID, + NS_ConvertUTF8toUCS2(mGConf->GetMozKey(aPrefAtom)).get());
looks like you need to check for if (!observer) before calling Observe()
other than that, I think this is ready to land. sr=alecf
Comment on attachment 120412
patch (add Alecf's comments)
+ if (!observer) { >NotifyRemove( aPrefAtom, pData); >RemoveElement( pData); pData-> observer) ; :Free(pData) ; ce(pData- >observer) ; >Observe( NS_STATIC_ CAST(nsIPrefBra nch *, this), PREFCHANGE_ TOPIC_ID, oUCS2(mGConf- >GetMozKey( aPrefAtom) ).get() );
+ // this weak referenced observer went away, remove it from the
list
+ nsresult rv = mGConf-
+ if (NS_SUCCEEDED(rv)) {
+ mObservers-
+ NS_RELEASE(
+ nsMemory:
+ }
+ return;
+ }
+ }
+ else
+ observer = do_QueryInterfa
+
+ observer-
+ NS_SYSTEMPREF_
+
NS_ConvertUTF8t
looks like you need to check for if (!observer) before calling Observe()
other than that, I think this is ready to land.
sr=alecf