From d75801144d1de95e4f6997079a2d7d53447a28c9 Mon Sep 17 00:00:00 2001 From: "scc%netscape.com" Date: Tue, 27 Apr 1999 01:29:23 +0000 Subject: [PATCH] Adjusted the ownership model slightly. URLs no longer `own' their container or their URL group git-svn-id: svn://10.0.0.236/trunk@29326 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/network/module/nsHttpUrl.cpp | 35 +++++++++++----------------- mozilla/network/module/nsHttpUrl.h | 10 ++++---- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/mozilla/network/module/nsHttpUrl.cpp b/mozilla/network/module/nsHttpUrl.cpp index aa8e3376005..87c8a246a2a 100644 --- a/mozilla/network/module/nsHttpUrl.cpp +++ b/mozilla/network/module/nsHttpUrl.cpp @@ -55,26 +55,22 @@ nsHttpUrlImpl::nsHttpUrlImpl(nsISupports* aContainer, nsIURLGroup* aGroup) mPort = -1; mSpec = nsnull; mSearch = nsnull; - mPostData = nsnull; mContainer = nsnull; - mLoadAttribs = nsnull; mURLGroup = aGroup; - NS_NewLoadAttribs(&mLoadAttribs); + NS_NewLoadAttribs( getter_AddRefs(mLoadAttribs) ); - NS_IF_ADDREF(mURLGroup); + // NS_IF_ADDREF(mURLGroup); --- a url should not own its group, its group already owns it mContainer = aContainer; - NS_IF_ADDREF(mContainer); + // NS_IF_ADDREF(mContainer); --- a url should not own its container, its container already owns it // ParseURL(aSpec, aURL); // XXX whh } nsHttpUrlImpl::~nsHttpUrlImpl() { - NS_IF_RELEASE(mContainer); - NS_IF_RELEASE(mLoadAttribs); - NS_IF_RELEASE(mURLGroup); - NS_IF_RELEASE(mPostData); + // NS_IF_RELEASE(mContainer); + // NS_IF_RELEASE(mURLGroup); PR_FREEIF(mSpec); PR_FREEIF(mProtocol); @@ -818,7 +814,7 @@ nsresult nsHttpUrlImpl::GetContainer(nsISupports* *result) const { NS_LOCK_INSTANCE(); *result = mContainer; - NS_IF_ADDREF(mContainer); + NS_IF_ADDREF(mContainer); // getters must |AddRef| their result, even if they _didn't_ already own it NS_UNLOCK_INSTANCE(); if (mContainer) return NS_OK; @@ -830,9 +826,9 @@ nsresult nsHttpUrlImpl::SetContainer(nsISupports* container) { NS_ASSERTION(m_URL_s == nsnull, "URL has already been opened"); NS_LOCK_INSTANCE(); - NS_IF_RELEASE(mContainer); + // NS_IF_RELEASE(mContainer); mContainer = container; - NS_IF_ADDREF(mContainer); + // NS_IF_ADDREF(mContainer); NS_UNLOCK_INSTANCE(); return NS_OK; } @@ -841,7 +837,7 @@ nsresult nsHttpUrlImpl::GetLoadAttribs(nsILoadAttribs* *result) const { NS_LOCK_INSTANCE(); *result = mLoadAttribs; - NS_IF_ADDREF(mLoadAttribs); + NS_IF_ADDREF(*result); NS_UNLOCK_INSTANCE(); return NS_OK; } @@ -850,9 +846,7 @@ nsresult nsHttpUrlImpl::SetLoadAttribs(nsILoadAttribs* aLoadAttribs) { NS_ASSERTION(m_URL_s == nsnull, "URL has already been opened"); NS_LOCK_INSTANCE(); - NS_IF_RELEASE(mLoadAttribs); - mLoadAttribs = aLoadAttribs; - NS_IF_ADDREF(mLoadAttribs); + mLoadAttribs = dont_QueryInterface(aLoadAttribs); NS_UNLOCK_INSTANCE(); return NS_OK; } @@ -861,7 +855,7 @@ nsresult nsHttpUrlImpl::GetURLGroup(nsIURLGroup* *result) const { NS_LOCK_INSTANCE(); *result = mURLGroup; - NS_IF_ADDREF(mURLGroup); + NS_IF_ADDREF(mURLGroup); // getters must |AddRef| their result, even if they didn'st already own it NS_UNLOCK_INSTANCE(); return NS_OK; } @@ -870,9 +864,9 @@ nsresult nsHttpUrlImpl::SetURLGroup(nsIURLGroup* group) { NS_ASSERTION(m_URL_s == nsnull, "URL has already been opened"); NS_LOCK_INSTANCE(); - NS_IF_RELEASE(mURLGroup); + // NS_IF_RELEASE(mURLGroup); mURLGroup = group; - NS_IF_ADDREF(mURLGroup); + // NS_IF_ADDREF(mURLGroup); NS_UNLOCK_INSTANCE(); return NS_OK; } @@ -889,8 +883,7 @@ nsresult nsHttpUrlImpl::SetPostHeader(const char* name, const char* value) nsresult nsHttpUrlImpl::SetPostData(nsIInputStream* input) { NS_LOCK_INSTANCE(); - mPostData = input; - input->AddRef(); + mPostData = dont_QueryInterface(input); NS_UNLOCK_INSTANCE(); return NS_OK; } diff --git a/mozilla/network/module/nsHttpUrl.h b/mozilla/network/module/nsHttpUrl.h index bf92bf50574..733a3c5ce5a 100644 --- a/mozilla/network/module/nsHttpUrl.h +++ b/mozilla/network/module/nsHttpUrl.h @@ -23,6 +23,7 @@ #include "nsINetlibURL.h" #include "nsIHttpURL.h" #include "nsIPostToServer.h" +#include "nsCOMPtr.h" class nsHttpUrlImpl : public nsIURL, public nsINetlibURL, public nsIHttpURL, public nsIPostToServer // XXX for now @@ -107,10 +108,11 @@ protected: char* mRef; char* mSearch; PRInt32 mPort; - nsIInputStream* mPostData; - nsISupports* mContainer; - nsILoadAttribs* mLoadAttribs; - nsIURLGroup* mURLGroup; + + nsCOMPtr mPostData; + nsISupports* mContainer; // explicitly changed to no longer own its container + nsCOMPtr mLoadAttribs; + nsIURLGroup* mURLGroup; // explicitly changed to no longer own its group }; #endif // nsHttpUrl_h__