From 806d729272faefec311f6d35e1ae7dfac6159b98 Mon Sep 17 00:00:00 2001 From: "jst%netscape.com" Date: Sat, 9 Feb 2002 01:42:44 +0000 Subject: [PATCH] Fixing bug 118194. Make sure we don't leave dangling document pointers in the content tree when the document goes away. r=bzbarsky@mit.edu, sr=vidur@netscape.com --- content/base/src/nsDocument.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/content/base/src/nsDocument.cpp b/content/base/src/nsDocument.cpp index 431a15c7e7bf..bb95d366c88c 100644 --- a/content/base/src/nsDocument.cpp +++ b/content/base/src/nsDocument.cpp @@ -508,6 +508,28 @@ nsDocument::~nsDocument() NS_RELEASE(subdoc); } + if (mRootContent) { + nsCOMPtr doc; + + mRootContent->GetDocument(*getter_AddRefs(doc)); + + if (doc) { + // The root content still has a pointer back to the document, + // clear the document pointer in all children. + + PRUint32 count; + mChildren->Count(&count); + for (indx = 0; (PRUint32)indx < count; indx++) { + nsCOMPtr content; + + mChildren->QueryElementAt(indx, NS_GET_IID(nsIContent), + getter_AddRefs(content)); + + content->SetDocument(nsnull, PR_TRUE, PR_FALSE); + } + } + } + mRootContent = nsnull; mChildren->Clear();