From 817b5ccbd920a8f34e645bf21d7384999f631641 Mon Sep 17 00:00:00 2001 From: Kyle Huey Date: Sat, 15 Mar 2014 12:00:17 -0700 Subject: [PATCH] Bug 345123: Remove nsGetterAddRefs's operator nsISupports**. r=bsmedberg --- caps/src/nsPrincipal.cpp | 15 +++++++++---- content/base/src/nsCSPService.cpp | 4 +++- content/base/src/nsContentAreaDragDrop.cpp | 17 +++++++++++---- content/base/src/nsHostObjectURI.cpp | 7 ++++++- .../webspeech/synth/pico/nsPicoService.cpp | 7 +++++-- content/xul/content/src/nsXULElement.cpp | 4 +++- .../document/src/nsXULPrototypeDocument.cpp | 10 ++++++--- .../src/nsXULTemplateQueryProcessorXML.cpp | 4 +++- dom/ipc/FilePickerParent.cpp | 4 +++- dom/src/jsurl/nsJSProtocolHandler.cpp | 4 +++- js/xpconnect/src/nsXPConnect.cpp | 8 +++++-- layout/mathml/nsMathMLOperators.cpp | 4 +++- modules/libjar/nsJARURI.cpp | 11 ++++++++-- modules/libpref/src/Preferences.cpp | 4 +++- netwerk/base/src/nsSimpleNestedURI.cpp | 6 +++++- netwerk/cookie/nsCookieService.cpp | 5 ++++- .../src/nsStreamConverterService.cpp | 6 ++++-- .../downloads/ApplicationReputation.cpp | 14 +++++++++---- toolkit/components/intl/nsCharsetMenu.cpp | 5 +++-- toolkit/components/places/Database.cpp | 5 +++-- .../components/url-classifier/Classifier.cpp | 6 ++++-- toolkit/xre/nsAppRunner.cpp | 7 ++++--- widget/windows/nsDataObj.cpp | 21 +++++++++++++------ xpcom/base/nsMemoryImpl.cpp | 6 ++++-- xpcom/glue/nsCOMPtr.h | 6 ------ xpcom/io/nsLocalFileUnix.cpp | 6 ++++-- xpcom/tests/TestCOMPtr.cpp | 1 - xpcom/tests/TestObserverService.cpp | 4 +++- 28 files changed, 141 insertions(+), 60 deletions(-) diff --git a/caps/src/nsPrincipal.cpp b/caps/src/nsPrincipal.cpp index 22913e92075e..440f107f3079 100644 --- a/caps/src/nsPrincipal.cpp +++ b/caps/src/nsPrincipal.cpp @@ -493,18 +493,23 @@ nsPrincipal::GetBaseDomain(nsACString& aBaseDomain) NS_IMETHODIMP nsPrincipal::Read(nsIObjectInputStream* aStream) { + nsCOMPtr supports; nsCOMPtr codebase; - nsresult rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(codebase)); + nsresult rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(supports)); if (NS_FAILED(rv)) { return rv; } + codebase = do_QueryInterface(supports); + nsCOMPtr domain; - rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(domain)); + rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(supports)); if (NS_FAILED(rv)) { return rv; } + domain = do_QueryInterface(supports); + uint32_t appId; rv = aStream->Read32(&appId); NS_ENSURE_SUCCESS(rv, rv); @@ -513,10 +518,12 @@ nsPrincipal::Read(nsIObjectInputStream* aStream) rv = aStream->ReadBoolean(&inMozBrowser); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr csp; - rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(csp)); + rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(supports)); NS_ENSURE_SUCCESS(rv, rv); + // This may be null. + nsCOMPtr csp = do_QueryInterface(supports, &rv); + rv = Init(codebase, appId, inMozBrowser); NS_ENSURE_SUCCESS(rv, rv); diff --git a/content/base/src/nsCSPService.cpp b/content/base/src/nsCSPService.cpp index ef64dee6a6e3..7461c86e2ab9 100644 --- a/content/base/src/nsCSPService.cpp +++ b/content/base/src/nsCSPService.cpp @@ -293,8 +293,10 @@ CSPService::AsyncOnChannelRedirect(nsIChannel *oldChannel, if (!channelPolicy) return NS_OK; + nsCOMPtr supports; nsCOMPtr csp; - channelPolicy->GetContentSecurityPolicy(getter_AddRefs(csp)); + channelPolicy->GetContentSecurityPolicy(getter_AddRefs(supports)); + csp = do_QueryInterface(supports); uint32_t loadType; channelPolicy->GetLoadType(&loadType); diff --git a/content/base/src/nsContentAreaDragDrop.cpp b/content/base/src/nsContentAreaDragDrop.cpp index 057838369eda..b20753aa2746 100644 --- a/content/base/src/nsContentAreaDragDrop.cpp +++ b/content/base/src/nsContentAreaDragDrop.cpp @@ -664,21 +664,30 @@ DragDataProducer::Produce(DataTransfer* aDataTransfer, } NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr supports; nsCOMPtr data; uint32_t dataSize; - rv = transferable->GetTransferData(kHTMLMime, getter_AddRefs(data), &dataSize); + rv = transferable->GetTransferData(kHTMLMime, getter_AddRefs(supports), + &dataSize); + data = do_QueryInterface(supports); if (NS_SUCCEEDED(rv)) { data->GetData(mHtmlString); } - rv = transferable->GetTransferData(kHTMLContext, getter_AddRefs(data), &dataSize); + rv = transferable->GetTransferData(kHTMLContext, getter_AddRefs(supports), + &dataSize); + data = do_QueryInterface(supports); if (NS_SUCCEEDED(rv)) { data->GetData(mContextString); } - rv = transferable->GetTransferData(kHTMLInfo, getter_AddRefs(data), &dataSize); + rv = transferable->GetTransferData(kHTMLInfo, getter_AddRefs(supports), + &dataSize); + data = do_QueryInterface(supports); if (NS_SUCCEEDED(rv)) { data->GetData(mInfoString); } - rv = transferable->GetTransferData(kUnicodeMime, getter_AddRefs(data), &dataSize); + rv = transferable->GetTransferData(kUnicodeMime, getter_AddRefs(supports), + &dataSize); + data = do_QueryInterface(supports); NS_ENSURE_SUCCESS(rv, rv); // require plain text at a minimum data->GetData(mTitleString); } diff --git a/content/base/src/nsHostObjectURI.cpp b/content/base/src/nsHostObjectURI.cpp index aeeb9003f497..c5fb2bbeb7de 100644 --- a/content/base/src/nsHostObjectURI.cpp +++ b/content/base/src/nsHostObjectURI.cpp @@ -62,7 +62,12 @@ nsHostObjectURI::Read(nsIObjectInputStream* aStream) nsresult rv = nsSimpleURI::Read(aStream); NS_ENSURE_SUCCESS(rv, rv); - return NS_ReadOptionalObject(aStream, true, getter_AddRefs(mPrincipal)); + nsCOMPtr supports; + rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(supports)); + NS_ENSURE_SUCCESS(rv, rv); + + mPrincipal = do_QueryInterface(supports, &rv); + return rv; } NS_IMETHODIMP diff --git a/content/media/webspeech/synth/pico/nsPicoService.cpp b/content/media/webspeech/synth/pico/nsPicoService.cpp index c5a7e1873ecf..7c6ec2d064b4 100644 --- a/content/media/webspeech/synth/pico/nsPicoService.cpp +++ b/content/media/webspeech/synth/pico/nsPicoService.cpp @@ -536,10 +536,13 @@ nsPicoService::Init() MonitorAutoLock autoLock(mVoicesMonitor); while (hasMoreElements && NS_SUCCEEDED(rv)) { - nsCOMPtr voiceFile; - rv = dirIterator->GetNext(getter_AddRefs(voiceFile)); + nsCOMPtr supports; + rv = dirIterator->GetNext(getter_AddRefs(supports)); MOZ_ASSERT(NS_SUCCEEDED(rv)); + nsCOMPtr voiceFile = do_QueryInterface(supports); + MOZ_ASSERT(voiceFile); + nsAutoCString leafName; voiceFile->GetNativeLeafName(leafName); diff --git a/content/xul/content/src/nsXULElement.cpp b/content/xul/content/src/nsXULElement.cpp index dc7c1e09ad10..a4631ba7a290 100644 --- a/content/xul/content/src/nsXULElement.cpp +++ b/content/xul/content/src/nsXULElement.cpp @@ -2247,7 +2247,9 @@ nsXULPrototypeElement::Deserialize(nsIObjectInputStream* aStream, rv = tmp; } } else { - tmp = aStream->ReadObject(true, getter_AddRefs(script->mSrcURI)); + nsCOMPtr supports; + tmp = aStream->ReadObject(true, getter_AddRefs(supports)); + script->mSrcURI = do_QueryInterface(supports); if (NS_FAILED(tmp)) { rv = tmp; } diff --git a/content/xul/document/src/nsXULPrototypeDocument.cpp b/content/xul/document/src/nsXULPrototypeDocument.cpp index 0ddaa0978474..5eb19298a40d 100644 --- a/content/xul/document/src/nsXULPrototypeDocument.cpp +++ b/content/xul/document/src/nsXULPrototypeDocument.cpp @@ -229,7 +229,9 @@ nsXULPrototypeDocument::Read(nsIObjectInputStream* aStream) { nsresult rv; - rv = aStream->ReadObject(true, getter_AddRefs(mURI)); + nsCOMPtr supports; + rv = aStream->ReadObject(true, getter_AddRefs(supports)); + mURI = do_QueryInterface(supports); uint32_t count, i; nsCOMPtr styleOverlayURI; @@ -243,17 +245,19 @@ nsXULPrototypeDocument::Read(nsIObjectInputStream* aStream) } for (i = 0; i < count; ++i) { - tmp = aStream->ReadObject(true, getter_AddRefs(styleOverlayURI)); + tmp = aStream->ReadObject(true, getter_AddRefs(supports)); if (NS_FAILED(tmp)) { rv = tmp; } + styleOverlayURI = do_QueryInterface(supports); mStyleSheetReferences.AppendObject(styleOverlayURI); } // nsIPrincipal mNodeInfoManager->mPrincipal nsCOMPtr principal; - tmp = aStream->ReadObject(true, getter_AddRefs(principal)); + tmp = aStream->ReadObject(true, getter_AddRefs(supports)); + principal = do_QueryInterface(supports); if (NS_FAILED(tmp)) { rv = tmp; } diff --git a/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp b/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp index 28a26a715473..a88247e63452 100644 --- a/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp +++ b/content/xul/templates/src/nsXULTemplateQueryProcessorXML.cpp @@ -316,10 +316,12 @@ nsXULTemplateQueryProcessorXML::GenerateResults(nsISupports* aDatasource, if (!xmlquery) return NS_ERROR_INVALID_ARG; + nsCOMPtr supports; nsCOMPtr context; if (aRef) aRef->GetBindingObjectFor(xmlquery->GetMemberVariable(), - getter_AddRefs(context)); + getter_AddRefs(supports)); + context = do_QueryInterface(supports); if (!context) context = mRoot; diff --git a/dom/ipc/FilePickerParent.cpp b/dom/ipc/FilePickerParent.cpp index 4ed8956ec111..b35e38010e19 100644 --- a/dom/ipc/FilePickerParent.cpp +++ b/dom/ipc/FilePickerParent.cpp @@ -139,10 +139,12 @@ FilePickerParent::Done(int16_t aResult) nsCOMPtr iter; NS_ENSURE_SUCCESS_VOID(mFilePicker->GetFiles(getter_AddRefs(iter))); + nsCOMPtr supports; nsCOMPtr file; bool loop = true; while (NS_SUCCEEDED(iter->HasMoreElements(&loop)) && loop) { - iter->GetNext(getter_AddRefs(file)); + iter->GetNext(getter_AddRefs(supports)); + file = do_QueryInterface(supports); nsCOMPtr domfile = new nsDOMFileFile(file); domfiles.AppendElement(domfile); } diff --git a/dom/src/jsurl/nsJSProtocolHandler.cpp b/dom/src/jsurl/nsJSProtocolHandler.cpp index 1565843df1de..d7e984150b6b 100644 --- a/dom/src/jsurl/nsJSProtocolHandler.cpp +++ b/dom/src/jsurl/nsJSProtocolHandler.cpp @@ -1293,8 +1293,10 @@ nsJSURI::Read(nsIObjectInputStream* aStream) if (NS_FAILED(rv)) return rv; if (haveBase) { - rv = aStream->ReadObject(true, getter_AddRefs(mBaseURI)); + nsCOMPtr supports; + rv = aStream->ReadObject(true, getter_AddRefs(supports)); if (NS_FAILED(rv)) return rv; + mBaseURI = do_QueryInterface(supports); } return NS_OK; diff --git a/js/xpconnect/src/nsXPConnect.cpp b/js/xpconnect/src/nsXPConnect.cpp index 6008ce9cf76d..05a9f2299e7d 100644 --- a/js/xpconnect/src/nsXPConnect.cpp +++ b/js/xpconnect/src/nsXPConnect.cpp @@ -1423,18 +1423,22 @@ ReadScriptOrFunction(nsIObjectInputStream *stream, JSContext *cx, nsJSPrincipals* principal = nullptr; nsCOMPtr readPrincipal; if (flags & HAS_PRINCIPALS_FLAG) { - rv = stream->ReadObject(true, getter_AddRefs(readPrincipal)); + nsCOMPtr supports; + rv = stream->ReadObject(true, getter_AddRefs(supports)); if (NS_FAILED(rv)) return rv; + readPrincipal = do_QueryInterface(supports); principal = nsJSPrincipals::get(readPrincipal); } nsJSPrincipals* originPrincipal = nullptr; nsCOMPtr readOriginPrincipal; if (flags & HAS_ORIGIN_PRINCIPALS_FLAG) { - rv = stream->ReadObject(true, getter_AddRefs(readOriginPrincipal)); + nsCOMPtr supports; + rv = stream->ReadObject(true, getter_AddRefs(supports)); if (NS_FAILED(rv)) return rv; + readOriginPrincipal = do_QueryInterface(supports); originPrincipal = nsJSPrincipals::get(readOriginPrincipal); } diff --git a/layout/mathml/nsMathMLOperators.cpp b/layout/mathml/nsMathMLOperators.cpp index 5ffec1672fd4..407663ddc288 100644 --- a/layout/mathml/nsMathMLOperators.cpp +++ b/layout/mathml/nsMathMLOperators.cpp @@ -238,8 +238,10 @@ InitOperators(void) nsAutoCString name; nsAutoString attributes; while ((NS_SUCCEEDED(iterator->HasMoreElements(&more))) && more) { + nsCOMPtr supports; nsCOMPtr element; - if (NS_SUCCEEDED(iterator->GetNext(getter_AddRefs(element)))) { + if (NS_SUCCEEDED(iterator->GetNext(getter_AddRefs(supports)))) { + element = do_QueryInterface(supports); if (NS_SUCCEEDED(element->GetKey(name)) && NS_SUCCEEDED(element->GetValue(attributes))) { // expected key: operator.\uNNNN.{infix,postfix,prefix} diff --git a/modules/libjar/nsJARURI.cpp b/modules/libjar/nsJARURI.cpp index 671148637a59..c64505627450 100644 --- a/modules/libjar/nsJARURI.cpp +++ b/modules/libjar/nsJARURI.cpp @@ -120,10 +120,17 @@ nsJARURI::Read(nsIObjectInputStream* aInputStream) { nsresult rv; - rv = aInputStream->ReadObject(true, getter_AddRefs(mJARFile)); + nsCOMPtr supports; + rv = aInputStream->ReadObject(true, getter_AddRefs(supports)); NS_ENSURE_SUCCESS(rv, rv); - rv = aInputStream->ReadObject(true, getter_AddRefs(mJAREntry)); + mJARFile = do_QueryInterface(supports, &rv); + NS_ENSURE_SUCCESS(rv, rv); + + rv = aInputStream->ReadObject(true, getter_AddRefs(supports)); + NS_ENSURE_SUCCESS(rv, rv); + + mJAREntry = do_QueryInterface(supports); NS_ENSURE_SUCCESS(rv, rv); rv = aInputStream->ReadCString(mCharsetHint); diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferences.cpp index a818df8bfc99..6e10ea5ee4bb 100644 --- a/modules/libpref/src/Preferences.cpp +++ b/modules/libpref/src/Preferences.cpp @@ -1049,7 +1049,9 @@ pref_LoadPrefsInDir(nsIFile* aDir, char const *const *aSpecialFiles, uint32_t aS while (hasMoreElements && NS_SUCCEEDED(rv)) { nsAutoCString leafName; - rv = dirIterator->GetNext(getter_AddRefs(prefFile)); + nsCOMPtr supports; + rv = dirIterator->GetNext(getter_AddRefs(supports)); + prefFile = do_QueryInterface(supports); if (NS_FAILED(rv)) { break; } diff --git a/netwerk/base/src/nsSimpleNestedURI.cpp b/netwerk/base/src/nsSimpleNestedURI.cpp index fc9e45b0073c..c3cd03f2d04b 100644 --- a/netwerk/base/src/nsSimpleNestedURI.cpp +++ b/netwerk/base/src/nsSimpleNestedURI.cpp @@ -29,7 +29,11 @@ nsSimpleNestedURI::Read(nsIObjectInputStream* aStream) NS_ASSERTION(!mMutable, "How did that happen?"); - rv = aStream->ReadObject(true, getter_AddRefs(mInnerURI)); + nsCOMPtr supports; + rv = aStream->ReadObject(true, getter_AddRefs(supports)); + if (NS_FAILED(rv)) return rv; + + mInnerURI = do_QueryInterface(supports, &rv); if (NS_FAILED(rv)) return rv; NS_TryToSetImmutable(mInnerURI); diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp index 6b665c3ac033..a6c1580fa0b9 100644 --- a/netwerk/cookie/nsCookieService.cpp +++ b/netwerk/cookie/nsCookieService.cpp @@ -4066,10 +4066,13 @@ nsCookieService::RemoveCookiesForApp(uint32_t aAppId, bool aOnlyBrowserElement) bool hasMore; while (NS_SUCCEEDED(enumerator->HasMoreElements(&hasMore)) && hasMore) { + nsCOMPtr supports; nsCOMPtr cookie; - rv = enumerator->GetNext(getter_AddRefs(cookie)); + rv = enumerator->GetNext(getter_AddRefs(supports)); NS_ENSURE_SUCCESS(rv, rv); + cookie = do_QueryInterface(supports); + nsAutoCString host; cookie->GetHost(host); diff --git a/netwerk/streamconv/src/nsStreamConverterService.cpp b/netwerk/streamconv/src/nsStreamConverterService.cpp index 1bb4c5fa8f93..2764f12b35ed 100644 --- a/netwerk/streamconv/src/nsStreamConverterService.cpp +++ b/netwerk/streamconv/src/nsStreamConverterService.cpp @@ -125,9 +125,11 @@ nsStreamConverterService::BuildGraph() { if (NS_FAILED(rv)) return rv; // go through each entry to build the graph + nsCOMPtr supports; nsCOMPtr entry; - rv = entries->GetNext(getter_AddRefs(entry)); + rv = entries->GetNext(getter_AddRefs(supports)); while (NS_SUCCEEDED(rv)) { + entry = do_QueryInterface(supports); // get the entry string nsAutoCString entryString; @@ -142,7 +144,7 @@ nsStreamConverterService::BuildGraph() { rv = AddAdjacency(contractID.get()); if (NS_FAILED(rv)) return rv; - rv = entries->GetNext(getter_AddRefs(entry)); + rv = entries->GetNext(getter_AddRefs(supports)); } return NS_OK; diff --git a/toolkit/components/downloads/ApplicationReputation.cpp b/toolkit/components/downloads/ApplicationReputation.cpp index bcab2fdb5820..39ac9697e09d 100644 --- a/toolkit/components/downloads/ApplicationReputation.cpp +++ b/toolkit/components/downloads/ApplicationReputation.cpp @@ -583,8 +583,11 @@ PendingLookup::ParseCertificates( NS_ENSURE_SUCCESS(rv, rv); while (hasMoreChains) { - nsCOMPtr certList = nullptr; - rv = chains->GetNext(getter_AddRefs(certList)); + nsCOMPtr supports; + rv = chains->GetNext(getter_AddRefs(supports)); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr certList = do_QueryInterface(supports, &rv); NS_ENSURE_SUCCESS(rv, rv); safe_browsing::ClientDownloadRequest_CertificateChain* certChain = @@ -597,8 +600,11 @@ PendingLookup::ParseCertificates( bool hasMoreCerts = false; rv = chainElt->HasMoreElements(&hasMoreCerts); while (hasMoreCerts) { - nsCOMPtr cert = nullptr; - rv = chainElt->GetNext(getter_AddRefs(cert)); + nsCOMPtr supports; + rv = chainElt->GetNext(getter_AddRefs(supports)); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr cert = do_QueryInterface(supports, &rv); NS_ENSURE_SUCCESS(rv, rv); uint8_t* data = nullptr; diff --git a/toolkit/components/intl/nsCharsetMenu.cpp b/toolkit/components/intl/nsCharsetMenu.cpp index 5545633e79aa..050914854fa0 100644 --- a/toolkit/components/intl/nsCharsetMenu.cpp +++ b/toolkit/components/intl/nsCharsetMenu.cpp @@ -554,8 +554,9 @@ nsresult nsCharsetMenu::RefreshMaileditMenu() NS_ENSURE_SUCCESS(res, res); // clear the menu - nsCOMPtr node; - while (NS_SUCCEEDED(enumerator->GetNext(getter_AddRefs(node)))) { + nsCOMPtr supports; + while (NS_SUCCEEDED(enumerator->GetNext(getter_AddRefs(supports)))) { + nsCOMPtr node = do_QueryInterface(supports); res = mInner->Unassert(kNC_MaileditCharsetMenuRoot, kNC_Name, node); NS_ENSURE_SUCCESS(res, res); diff --git a/toolkit/components/places/Database.cpp b/toolkit/components/places/Database.cpp index f9ca3a735b41..b75d97e43b80 100644 --- a/toolkit/components/places/Database.cpp +++ b/toolkit/components/places/Database.cpp @@ -1974,8 +1974,9 @@ Database::Observe(nsISupports *aSubject, getter_AddRefs(e))) && e) { bool hasMore = false; while (NS_SUCCEEDED(e->HasMoreElements(&hasMore)) && hasMore) { - nsCOMPtr observer; - if (NS_SUCCEEDED(e->GetNext(getter_AddRefs(observer)))) { + nsCOMPtr supports; + if (NS_SUCCEEDED(e->GetNext(getter_AddRefs(supports)))) { + nsCOMPtr observer = do_QueryInterface(supports); (void)observer->Observe(observer, TOPIC_PLACES_INIT_COMPLETE, nullptr); } } diff --git a/toolkit/components/url-classifier/Classifier.cpp b/toolkit/components/url-classifier/Classifier.cpp index e1fcb1a62d25..0eb2b1a10046 100644 --- a/toolkit/components/url-classifier/Classifier.cpp +++ b/toolkit/components/url-classifier/Classifier.cpp @@ -414,10 +414,12 @@ Classifier::ScanStoreDir(nsTArray& aTables) bool hasMore; while (NS_SUCCEEDED(rv = entries->HasMoreElements(&hasMore)) && hasMore) { - nsCOMPtr file; - rv = entries->GetNext(getter_AddRefs(file)); + nsCOMPtr supports; + rv = entries->GetNext(getter_AddRefs(supports)); NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr file = do_QueryInterface(supports); + nsCString leafName; rv = file->GetNativeLeafName(leafName); NS_ENSURE_SUCCESS(rv, rv); diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp index b81ff321da63..d87ac40d1f3a 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp @@ -1977,9 +1977,10 @@ SetCurrentProfileAsDefault(nsIToolkitProfileService* aProfileSvc, return rv; bool foundMatchingProfile = false; - nsCOMPtr profile; - rv = profiles->GetNext(getter_AddRefs(profile)); + nsCOMPtr supports; + rv = profiles->GetNext(getter_AddRefs(supports)); while (NS_SUCCEEDED(rv)) { + nsCOMPtr profile = do_QueryInterface(supports); nsCOMPtr profileRoot; profile->GetRootDir(getter_AddRefs(profileRoot)); profileRoot->Equals(aCurrentProfileRoot, &foundMatchingProfile); @@ -1989,7 +1990,7 @@ SetCurrentProfileAsDefault(nsIToolkitProfileService* aProfileSvc, rv = aProfileSvc->Flush(); return rv; } - rv = profiles->GetNext(getter_AddRefs(profile)); + rv = profiles->GetNext(getter_AddRefs(supports)); } return rv; } diff --git a/widget/windows/nsDataObj.cpp b/widget/windows/nsDataObj.cpp index 188896c987e6..68dd4cd24db0 100644 --- a/widget/windows/nsDataObj.cpp +++ b/widget/windows/nsDataObj.cpp @@ -812,8 +812,11 @@ nsDataObj::GetDib(const nsACString& inFlavor, // This might not be necessary any more, but could be useful for backwards // compatibility. nsCOMPtr ptr(do_QueryInterface(genericDataWrapper)); - if ( ptr ) - ptr->GetData(getter_AddRefs(image)); + if ( ptr ) { + nsCOMPtr supports; + ptr->GetData(getter_AddRefs(supports)); + image = do_QueryInterface(supports); + } } if ( image ) { @@ -1359,8 +1362,11 @@ HRESULT nsDataObj::DropFile(FORMATETC& aFE, STGMEDIUM& aSTG) if (!file) { nsCOMPtr ptr(do_QueryInterface(genericDataWrapper)); - if (ptr) - ptr->GetData(getter_AddRefs(file)); + if (ptr) { + nsCOMPtr supports; + ptr->GetData(getter_AddRefs(supports)); + file = do_QueryInterface(supports); + } } if (!file) @@ -1423,8 +1429,11 @@ HRESULT nsDataObj::DropImage(FORMATETC& aFE, STGMEDIUM& aSTG) // This might not be necessary any more, but could be useful for backwards // compatibility. nsCOMPtr ptr(do_QueryInterface(genericDataWrapper)); - if (ptr) - ptr->GetData(getter_AddRefs(image)); + if (ptr) { + nsCOMPtr supports; + ptr->GetData(getter_AddRefs(supports)); + image = do_QueryInterface(supports); + } } if (!image) diff --git a/xpcom/base/nsMemoryImpl.cpp b/xpcom/base/nsMemoryImpl.cpp index 7d650d83fdd0..ae6a04f98875 100644 --- a/xpcom/base/nsMemoryImpl.cpp +++ b/xpcom/base/nsMemoryImpl.cpp @@ -156,11 +156,13 @@ nsMemoryImpl::RunFlushers(const char16_t* aReason) while (NS_SUCCEEDED(e->HasMoreElements(&loop)) && loop) { - e->GetNext(getter_AddRefs(observer)); + nsCOMPtr supports; + e->GetNext(getter_AddRefs(supports)); - if (!observer) + if (!supports) continue; + observer = do_QueryInterface(supports); observer->Observe(observer, "memory-pressure", aReason); } } diff --git a/xpcom/glue/nsCOMPtr.h b/xpcom/glue/nsCOMPtr.h index 1665cbcea153..ecd5bfca05b2 100644 --- a/xpcom/glue/nsCOMPtr.h +++ b/xpcom/glue/nsCOMPtr.h @@ -1411,12 +1411,6 @@ class nsGetterAddRefs { return reinterpret_cast(mTargetSmartPtr.StartAssignment()); } - - operator nsISupports**() - { - return reinterpret_cast(mTargetSmartPtr.StartAssignment()); - } - operator T**() { return mTargetSmartPtr.StartAssignment(); diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp index 70be6fa5d1fb..c3e55e86c7bc 100644 --- a/xpcom/io/nsLocalFileUnix.cpp +++ b/xpcom/io/nsLocalFileUnix.cpp @@ -673,9 +673,11 @@ nsLocalFile::CopyDirectoryTo(nsIFile *newParent) bool hasMore = false; while (dirIterator->HasMoreElements(&hasMore), hasMore) { + nsCOMPtr supports; nsCOMPtr entry; - rv = dirIterator->GetNext((nsISupports**)getter_AddRefs(entry)); - if (NS_FAILED(rv)) + rv = dirIterator->GetNext(getter_AddRefs(supports)); + entry = do_QueryInterface(supports); + if (NS_FAILED(rv) || !entry) continue; if (NS_FAILED(rv = entry->IsSymlink(&isSymlink))) return rv; diff --git a/xpcom/tests/TestCOMPtr.cpp b/xpcom/tests/TestCOMPtr.cpp index 1e5d00d9419d..411c114682b2 100644 --- a/xpcom/tests/TestCOMPtr.cpp +++ b/xpcom/tests/TestCOMPtr.cpp @@ -543,7 +543,6 @@ main() AnIFooPtrPtrContext( getter_AddRefs(fooP) ); AVoidPtrPtrContext( getter_AddRefs(fooP) ); - AnISupportsPtrPtrContext( getter_AddRefs(fooP) ); } diff --git a/xpcom/tests/TestObserverService.cpp b/xpcom/tests/TestObserverService.cpp index 8a5a9b0d52e6..a79f69dcc251 100644 --- a/xpcom/tests/TestObserverService.cpp +++ b/xpcom/tests/TestObserverService.cpp @@ -120,7 +120,9 @@ int main(int argc, char *argv[]) bool loop = true; while( NS_SUCCEEDED(e->HasMoreElements(&loop)) && loop) { - e->GetNext(getter_AddRefs(observer)); + nsCOMPtr supports; + e->GetNext(getter_AddRefs(supports)); + observer = do_QueryInterface(supports); printf("Calling observe on enumerated observer "); printString(reinterpret_cast (reinterpret_cast(observer.get()))->mName);