blocker bug 74728, r=pinkerton, Check for null mTokenAllocator before trying to free a token, for some reason unbeknowst to me, view source likes to create nsCParserNodes with a null allocator. Why this didn't bite us in the ass before is also beyond me.

This commit is contained in:
pchen@netscape.com
2001-04-04 18:38:28 +00:00
parent dbed61ea58
commit d868da9780
2 changed files with 16 additions and 4 deletions
+8 -2
View File
@@ -102,7 +102,10 @@ nsresult nsCParserNode::Init(CToken* aToken,PRInt32 aLineNumber,nsTokenAllocator
if(mAttributes && (mAttributes->GetSize())) {
CToken* theAttrToken=0;
while((theAttrToken=NS_STATIC_CAST(CToken*,mAttributes->Pop()))) {
IF_FREE(theAttrToken, aTokenAllocator);
// nsViewSourceHTML.cpp:513 creates nsCParserNodes with a NULL token allocator
// need to check to see if mTokenAllocator is non-null
if(aTokenAllocator)
IF_FREE(theAttrToken, aTokenAllocator);
}
}
mToken=aToken;
@@ -343,7 +346,10 @@ nsresult nsCParserNode::ReleaseAll() {
if(mAttributes) {
CToken* theAttrToken=0;
while((theAttrToken=NS_STATIC_CAST(CToken*,mAttributes->Pop()))) {
IF_FREE(theAttrToken, mTokenAllocator);
// nsViewSourceHTML.cpp:513 creates nsCParserNodes with a NULL token allocator
// need to check to see if mTokenAllocator is non-null
if(mTokenAllocator)
IF_FREE(theAttrToken, mTokenAllocator);
}
delete mAttributes;
mAttributes=0;