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
This commit is contained in:
dbaron%dbaron.org
2006-05-17 02:38:20 +00:00
parent 88b14d9f5b
commit 0477552e58
2 changed files with 27 additions and 13 deletions

View File

@@ -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

View File

@@ -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<nsITreeBoxObject> mTree;
nsCOMPtr<nsITreeSelection> mSelection;
nsCOMPtr<inIDOMUtils> mDOMUtils;