Reuse pre-insert manipulations
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 42659f2..1d5bc34 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -672,11 +672,7 @@
TIXMLASSERT( false );
return 0;
}
-
- if (addThis->_parent)
- addThis->_parent->Unlink( addThis );
- else
- addThis->_memPool->SetTracked();
+ BeforeInsertChild( addThis );
if ( _lastChild ) {
TIXMLASSERT( _firstChild );
@@ -706,11 +702,7 @@
TIXMLASSERT( false );
return 0;
}
-
- if (addThis->_parent)
- addThis->_parent->Unlink( addThis );
- else
- addThis->_memPool->SetTracked();
+ BeforeInsertChild( addThis );
if ( _firstChild ) {
TIXMLASSERT( _lastChild );
@@ -753,10 +745,7 @@
// The last node or the only node.
return InsertEndChild( addThis );
}
- if (addThis->_parent)
- addThis->_parent->Unlink( addThis );
- else
- addThis->_memPool->SetTracked();
+ BeforeInsertChild( addThis );
addThis->_prev = afterThis;
addThis->_next = afterThis->_next;
afterThis->_next->_prev = addThis;
@@ -906,6 +895,17 @@
pool->Free( node );
}
+void XMLNode::BeforeInsertChild( XMLNode* insertThis ) const
+{
+ TIXMLASSERT( insertThis );
+ TIXMLASSERT( insertThis->_document == _document );
+
+ if ( insertThis->_parent )
+ insertThis->_parent->Unlink( insertThis );
+ else
+ insertThis->_memPool->SetTracked();
+}
+
// --------- XMLText ---------- //
char* XMLText::ParseDeep( char* p, StrPair* )
{