From 0477552e58fc8333750a5aab5e9cc1ad4dda99d0 Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Wed, 17 May 2006 02:38:20 +0000 Subject: [PATCH] Fix one-time leak of atoms by converting to static atoms. b=230361 r=caillon sr=bryner git-svn-id: svn://10.0.0.236/trunk@197718 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/layout/inspector/src/inDOMView.cpp | 35 ++++++++++++++-------- mozilla/layout/inspector/src/inDOMView.h | 5 ++++ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/mozilla/layout/inspector/src/inDOMView.cpp b/mozilla/layout/inspector/src/inDOMView.cpp index 0bfdfeebb4f..e7b8122db03 100644 --- a/mozilla/layout/inspector/src/inDOMView.cpp +++ b/mozilla/layout/inspector/src/inDOMView.cpp @@ -119,19 +119,6 @@ inDOMView::inDOMView() : mShowWhitespaceNodes(PR_TRUE), mWhatToShow(nsIDOMNodeFilter::SHOW_ALL) { - kAnonymousAtom = NS_NewAtom("anonymous"); - kElementNodeAtom = NS_NewAtom("ELEMENT_NODE"); - kAttributeNodeAtom = NS_NewAtom("ATTRIBUTE_NODE"); - kTextNodeAtom = NS_NewAtom("TEXT_NODE"); - kCDataSectionNodeAtom = NS_NewAtom("CDATA_SECTION_NODE"); - kEntityReferenceNodeAtom = NS_NewAtom("ENTITY_REFERENCE_NODE"); - kEntityNodeAtom = NS_NewAtom("ENTITY_NODE"); - kProcessingInstructionNodeAtom = NS_NewAtom("PROCESSING_INSTRUCTION_NODE"); - kCommentNodeAtom = NS_NewAtom("COMMENT_NODE"); - kDocumentNodeAtom = NS_NewAtom("DOCUMENT_NODE"); - kDocumentTypeNodeAtom = NS_NewAtom("DOCUMENT_TYPE_NODE"); - kDocumentFragmentNodeAtom = NS_NewAtom("DOCUMENT_FRAGMENT_NODE"); - kNotationNodeAtom = NS_NewAtom("NOTATION_NODE"); } inDOMView::~inDOMView() @@ -139,6 +126,28 @@ inDOMView::~inDOMView() SetRootNode(nsnull); } +/* static */ const nsStaticAtom inDOMView::Atoms_info[] = { + {"anonymous", &inDOMView::kAnonymousAtom}, + {"ELEMENT_NODE", &inDOMView::kElementNodeAtom}, + {"ATTRIBUTE_NODE", &inDOMView::kAttributeNodeAtom}, + {"TEXT_NODE", &inDOMView::kTextNodeAtom}, + {"CDATA_SECTION_NODE", &inDOMView::kCDataSectionNodeAtom}, + {"ENTITY_REFERENCE_NODE", &inDOMView::kEntityReferenceNodeAtom}, + {"ENTITY_NODE", &inDOMView::kEntityNodeAtom}, + {"PROCESSING_INSTRUCTION_NODE", &inDOMView::kProcessingInstructionNodeAtom}, + {"COMMENT_NODE", &inDOMView::kCommentNodeAtom}, + {"DOCUMENT_NODE", &inDOMView::kDocumentNodeAtom}, + {"DOCUMENT_TYPE_NODE", &inDOMView::kDocumentTypeNodeAtom}, + {"DOCUMENT_FRAGMENT_NODE", &inDOMView::kDocumentFragmentNodeAtom}, + {"NOTATION_NODE", &inDOMView::kNotationNodeAtom} +}; + +/* static */ void +inDOMView::InitAtoms() +{ + NS_RegisterStaticAtoms(Atoms_info, NS_ARRAY_LENGTH(Atoms_info)); +} + //////////////////////////////////////////////////////////////////////// // nsISupports diff --git a/mozilla/layout/inspector/src/inDOMView.h b/mozilla/layout/inspector/src/inDOMView.h index 15b3675c043..49e6ba8498e 100644 --- a/mozilla/layout/inspector/src/inDOMView.h +++ b/mozilla/layout/inspector/src/inDOMView.h @@ -49,6 +49,7 @@ #include "nsIDOMDocument.h" #include "nsVoidArray.h" #include "nsCOMArray.h" +#include "nsStaticAtom.h" class inDOMViewNode; @@ -67,6 +68,8 @@ public: // nsIDocumentObserver NS_DECL_NSIDOCUMENTOBSERVER + static void InitAtoms(); + protected: static nsIAtom* kAnonymousAtom; static nsIAtom* kElementNodeAtom; @@ -82,6 +85,8 @@ protected: static nsIAtom* kDocumentFragmentNodeAtom; static nsIAtom* kNotationNodeAtom; + static const nsStaticAtom Atoms_info[]; + nsCOMPtr mTree; nsCOMPtr mSelection; nsCOMPtr mDOMUtils;