From 8e40fcd4a6472c64dfa7705f5132e4866323ba0e Mon Sep 17 00:00:00 2001 From: "spider%netscape.com" Date: Mon, 26 Oct 1998 22:57:37 +0000 Subject: [PATCH] Memory Leak fixes git-svn-id: svn://10.0.0.236/trunk@13495 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpfc/canvas/src/nsXPFCCanvas.cpp | 5 +++-- .../xpfc/parser/src/nsXPFCToolbarManager.cpp | 20 +++++++++++++++++-- .../xpfc/parser/src/nsXPFCXMLContentSink.cpp | 5 +++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/mozilla/xpfc/canvas/src/nsXPFCCanvas.cpp b/mozilla/xpfc/canvas/src/nsXPFCCanvas.cpp index 4105df4c14d..fb2f5569d61 100644 --- a/mozilla/xpfc/canvas/src/nsXPFCCanvas.cpp +++ b/mozilla/xpfc/canvas/src/nsXPFCCanvas.cpp @@ -137,7 +137,10 @@ nsXPFCCanvas :: ~nsXPFCCanvas() } if (nsnull != mView) + { + mView->SetParent(nsnull); mView->Destroy(); + } } @@ -607,8 +610,6 @@ nsresult nsXPFCCanvas :: LoadView(const nsCID &aViewClassIID, else if (GetParent() != nsnull) view = GetParent()->GetView(); - nsViewClip clip ; - mView->Init(gXPFCToolkit->GetViewManager(), bounds, view, diff --git a/mozilla/xpfc/parser/src/nsXPFCToolbarManager.cpp b/mozilla/xpfc/parser/src/nsXPFCToolbarManager.cpp index 4e09b9860f3..418752fa59d 100644 --- a/mozilla/xpfc/parser/src/nsXPFCToolbarManager.cpp +++ b/mozilla/xpfc/parser/src/nsXPFCToolbarManager.cpp @@ -33,8 +33,23 @@ nsXPFCToolbarManager :: nsXPFCToolbarManager() nsXPFCToolbarManager :: ~nsXPFCToolbarManager() { - if (mToolbars != nsnull) - { + if (mToolbars != nsnull) { + + nsIIterator * iterator; + + mToolbars->CreateIterator(&iterator); + iterator->Init(); + + nsIXPFCToolbar * item; + + while(!(iterator->IsDone())) + { + item = (nsIXPFCToolbar *) iterator->CurrentItem(); + NS_RELEASE(item); + iterator->Next(); + } + NS_RELEASE(iterator); + mToolbars->RemoveAll(); NS_RELEASE(mToolbars); } @@ -64,6 +79,7 @@ nsresult nsXPFCToolbarManager :: Init() nsresult nsXPFCToolbarManager :: AddToolbar(nsIXPFCToolbar * aToolbar) { mToolbars->Append(aToolbar); + NS_ADDREF(aToolbar); return NS_OK ; } diff --git a/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp b/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp index b1b95063d87..05a166e0bd9 100644 --- a/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp +++ b/mozilla/xpfc/parser/src/nsXPFCXMLContentSink.cpp @@ -357,7 +357,7 @@ NS_IMETHODIMP nsXPFCXMLContentSink::OpenContainer(const nsIParserNode& aNode) } // XXX: Really need this for all states - if (mState == XPFC_PARSING_STATE_MENUBAR) + if (mState == XPFC_PARSING_STATE_MENUBAR || mState == XPFC_PARSING_STATE_TOOLBAR) NS_RELEASE(object); return NS_OK; @@ -454,7 +454,7 @@ NS_IMETHODIMP nsXPFCXMLContentSink::AddLeaf(const nsIParserNode& aNode) } // XXX: Really need this for all states - if (mState == XPFC_PARSING_STATE_MENUBAR) + if (mState == XPFC_PARSING_STATE_MENUBAR || mState == XPFC_PARSING_STATE_TOOLBAR) NS_RELEASE(object); return NS_OK; @@ -817,6 +817,7 @@ NS_IMETHODIMP nsXPFCXMLContentSink::AddToHierarchy(nsIXMLParserObject& aObject, mXPFCStack->Push(child_canvas); NS_IF_RELEASE(child_canvas); + NS_IF_RELEASE(container); return NS_OK;