Lee Thomason пре 12 година
родитељ
комит
3b7927efb5
2 измењених фајлова са 10 додато и 3 уклоњено
  1. 7 0
      tinyxml2.cpp
  2. 3 3
      xmltest.cpp

+ 7 - 0
tinyxml2.cpp

@@ -638,6 +638,7 @@ void XMLNode::Unlink( XMLNode* child )
     if ( child->_next ) {
         child->_next->_prev = child->_prev;
     }
+	child->_parent = 0;
 }
 
 
@@ -652,10 +653,12 @@ XMLNode* XMLNode::InsertEndChild( XMLNode* addThis )
 {
 	if (addThis->_document != _document)
 		return 0;
+
 	if (addThis->_parent)
 		addThis->_parent->Unlink( addThis );
 	else
 	   addThis->_memPool->SetTracked();
+
     if ( _lastChild ) {
         TIXMLASSERT( _firstChild );
         TIXMLASSERT( _lastChild->_next == 0 );
@@ -681,10 +684,12 @@ XMLNode* XMLNode::InsertFirstChild( XMLNode* addThis )
 {
 	if (addThis->_document != _document)
 		return 0;
+
 	if (addThis->_parent)
 		addThis->_parent->Unlink( addThis );
 	else
 	   addThis->_memPool->SetTracked();
+
     if ( _firstChild ) {
         TIXMLASSERT( _lastChild );
         TIXMLASSERT( _firstChild->_prev == 0 );
@@ -711,7 +716,9 @@ XMLNode* XMLNode::InsertAfterChild( XMLNode* afterThis, XMLNode* addThis )
 {
 	if (addThis->_document != _document)
 		return 0;
+
     TIXMLASSERT( afterThis->_parent == this );
+
     if ( afterThis->_parent != this ) {
         return 0;
     }

+ 3 - 3
xmltest.cpp

@@ -1254,7 +1254,7 @@ int main( int argc, const char ** argv )
 		doc.RootElement()->InsertAfterChild(two, subtree);
 		XMLPrinter printer2( 0, true );
 		doc.Accept( &printer2 );
-		XMLTest( "Move node from within <one> after <two>", xmlAfterTwo, printer2.CStr());
+		XMLTest( "Move node from within <one> after <two>", xmlAfterTwo, printer2.CStr(), false );
 
 		doc.Parse( xml );
 		XMLNode* one = doc.RootElement()->FirstChildElement("one");
@@ -1262,7 +1262,7 @@ int main( int argc, const char ** argv )
 		doc.RootElement()->InsertAfterChild(one, subtree);
 		XMLPrinter printer3( 0, true );
 		doc.Accept( &printer3 );
-		XMLTest( "Move node from within <one> after <one>", xmlAfterOne, printer3.CStr());
+		XMLTest( "Move node from within <one> after <one>", xmlAfterOne, printer3.CStr(), false );
 
 		doc.Parse( xml );
 		subtree = doc.RootElement()->FirstChildElement("one")->FirstChildElement("subtree");
@@ -1270,7 +1270,7 @@ int main( int argc, const char ** argv )
 		doc.RootElement()->InsertEndChild(subtree);
 		XMLPrinter printer4( 0, true );
 		doc.Accept( &printer4 );
-		XMLTest( "Move node from within <one> after <two>", xmlAfterTwo, printer4.CStr());
+		XMLTest( "Move node from within <one> after <two>", xmlAfterTwo, printer4.CStr(), false );
 	}
 
 	// ----------- Performance tracking --------------