Comment 45 for bug 23369

Revision history for this message
In , alecf (alecf) wrote :

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