Implement "move" equivalent of assignment operator for StrPair
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 9928444..ee7a16c 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -70,6 +70,29 @@
 }

 

 

+void StrPair::TransferTo( StrPair& other )

+{

+    if ( this == &other ) {

+        return;

+    }

+    // This in effect implements the assignment operator by "moving"

+    // ownership (as in auto_ptr).

+

+    TIXMLASSERT( other._flags == 0 );

+    TIXMLASSERT( other._start == 0 );

+    TIXMLASSERT( other._end == 0 );

+

+    other.Reset();

+

+    other._flags = _flags;

+    other._start = _start;

+    other._end = _end;

+

+    _flags = 0;

+    _start = 0;

+    _end = 0;

+}

+

 void StrPair::Reset()

 {

     if ( _flags & NEEDS_DELETE ) {

@@ -824,7 +847,7 @@
         // We read the end tag. Return it to the parent.

         if ( ele && ele->ClosingType() == XMLElement::CLOSING ) {

             if ( parentEnd ) {

-                *parentEnd = ele->_value;

+                ele->_value.TransferTo( *parentEnd );

             }

 			node->_memPool->SetTracked();	// created and then immediately deleted.

             DeleteNode( node );