Kaynağa Gözat

fix assertion - Assertion '_elementPool.CurrentAllocs() == _elementPool.Untracked()' failed.

dinghao188 4 yıl önce
ebeveyn
işleme
9efb6b0b66
2 değiştirilmiş dosya ile 5 ekleme ve 5 silme
  1. 3 3
      tinyxml2.cpp
  2. 2 2
      xmltest.cpp

+ 3 - 3
tinyxml2.cpp

@@ -1077,7 +1077,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )
         StrPair endTag;
         p = node->ParseDeep( p, &endTag, curLineNumPtr );
         if ( !p ) {
-            DeleteNode( node );
+            _document->DeleteNode( node );
             if ( !_document->Error() ) {
                 _document->SetError( XML_ERROR_PARSING, initialLineNum, 0);
             }
@@ -1110,7 +1110,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )
             }
             if ( !wellLocated ) {
                 _document->SetError( XML_ERROR_PARSING_DECLARATION, initialLineNum, "XMLDeclaration value=%s", decl->Value());
-                DeleteNode( node );
+                _document->DeleteNode( node );
                 break;
             }
         }
@@ -1145,7 +1145,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )
             }
             if ( mismatch ) {
                 _document->SetError( XML_ERROR_MISMATCHED_ELEMENT, initialLineNum, "XMLElement name=%s", ele->Name());
-                DeleteNode( node );
+                _document->DeleteNode( node );
                 break;
             }
         }

+ 2 - 2
xmltest.cpp

@@ -2147,8 +2147,8 @@ int main( int argc, const char ** argv )
 		// successful loads should clear the error
 		XMLDocument doc;
 		XMLTest( "Should be no error initially", false, doc.Error() );
-		doc.LoadFile( "resources/no-such-file.xml" );
-		XMLTest( "No such file - should fail", true, doc.Error() );
+		doc.LoadFile( "resources/xmltest-5330.xml" );
+		XMLTest( "parse errors occur - should fail", true, doc.Error() );
 
 		doc.LoadFile( "resources/dream.xml" );
 		XMLTest( "Error should be cleared", false, doc.Error() );