diff --git a/mozilla/content/base/src/nsTreeWalker.cpp b/mozilla/content/base/src/nsTreeWalker.cpp index c5d61c6919b..973c3f61d30 100644 --- a/mozilla/content/base/src/nsTreeWalker.cpp +++ b/mozilla/content/base/src/nsTreeWalker.cpp @@ -100,18 +100,22 @@ nsTreeWalker::~nsTreeWalker() } /* - * nsISupports stuff + * nsISupports and cycle collection stuff */ +NS_IMPL_CYCLE_COLLECTION_3(nsTreeWalker, mFilter, mCurrentNode, mRoot) + // QueryInterface implementation for nsTreeWalker -NS_INTERFACE_MAP_BEGIN(nsTreeWalker) +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsTreeWalker) NS_INTERFACE_MAP_ENTRY(nsIDOMTreeWalker) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMTreeWalker) NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(TreeWalker) NS_INTERFACE_MAP_END -NS_IMPL_ADDREF(nsTreeWalker) -NS_IMPL_RELEASE(nsTreeWalker) +NS_IMPL_CYCLE_COLLECTING_ADDREF(nsTreeWalker) +NS_IMPL_CYCLE_COLLECTING_RELEASE(nsTreeWalker) + + /* * nsIDOMTreeWalker Getters/Setters diff --git a/mozilla/content/base/src/nsTreeWalker.h b/mozilla/content/base/src/nsTreeWalker.h index a1a3d0c1e05..707cc9a0e5c 100644 --- a/mozilla/content/base/src/nsTreeWalker.h +++ b/mozilla/content/base/src/nsTreeWalker.h @@ -48,6 +48,7 @@ #include "nsCOMPtr.h" #include "nsVoidArray.h" #include "nsJSUtils.h" +#include "nsCycleCollectionParticipant.h" class nsINode; class nsIDOMNode; @@ -56,7 +57,7 @@ class nsIDOMNodeFilter; class nsTreeWalker : public nsIDOMTreeWalker { public: - NS_DECL_ISUPPORTS + NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_NSIDOMTREEWALKER nsTreeWalker(nsINode *aRoot, @@ -64,7 +65,9 @@ public: nsIDOMNodeFilter *aFilter, PRBool aExpandEntityReferences); virtual ~nsTreeWalker(); - /* additional members */ + + NS_DECL_CYCLE_COLLECTION_CLASS(nsTreeWalker) + private: nsCOMPtr mRoot; PRUint32 mWhatToShow; diff --git a/mozilla/dom/tests/mochitest/bugs/Makefile.in b/mozilla/dom/tests/mochitest/bugs/Makefile.in index 53aeb7a21df..60e8801bf81 100644 --- a/mozilla/dom/tests/mochitest/bugs/Makefile.in +++ b/mozilla/dom/tests/mochitest/bugs/Makefile.in @@ -55,6 +55,7 @@ _TEST_FILES = \ test_bug370098.html \ test_bug377539.html \ test_bug384122.html \ + test_bug393974.html \ $(NULL) libs:: $(_TEST_FILES) diff --git a/mozilla/dom/tests/mochitest/bugs/test_bug393974.html b/mozilla/dom/tests/mochitest/bugs/test_bug393974.html new file mode 100644 index 00000000000..a1cae9f6fc0 --- /dev/null +++ b/mozilla/dom/tests/mochitest/bugs/test_bug393974.html @@ -0,0 +1,70 @@ + + + + + Test for Bug 393974 + + + + + +Mozilla Bug 393974 +

+ +
+
+
+ +