Fix one-time leak of atoms by converting to static atoms. b=230361 r=caillon sr=bryner

This commit is contained in:
dbaron%dbaron.org 2006-05-17 02:38:24 +00:00
parent 2d8ed15eb1
commit f6c5136445
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;