fix double delete in xml element
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index fe1665b..eae8f26 100644
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -188,18 +188,30 @@
 

 XMLNode::~XMLNode()

 {

-	XMLNode* node=firstChild;

-	while( node ) {

-		XMLNode* temp = node->next;

+	//printf( "~XMLNode %x\n", this );

+	while( firstChild ) {

+		XMLNode* node = firstChild;

+		Unlink( node );

 		delete node;

-		node = temp;

 	}

-	if ( prev ) {

-		prev->next = next;

+}

+

+

+void XMLNode::Unlink( XMLNode* child )

+{

+	TIXMLASSERT( child->parent == this );

+	if ( child == firstChild ) 

+		firstChild = firstChild->next;

+	if ( child == lastChild ) 

+		lastChild = lastChild->prev;

+

+	if ( child->prev ) {

+		child->prev->next = child->next;

 	}

-	if ( next ) {

-		next->prev = prev;

+	if ( child->next ) {

+		child->next->prev = child->prev;

 	}

+	child->parent = 0;

 }

 

 

@@ -254,6 +266,7 @@
 

 XMLComment::~XMLComment()

 {

+	//printf( "~XMLComment\n" );

 }

 

 

@@ -299,19 +312,14 @@
 

 XMLElement::~XMLElement()

 {

+	//printf( "~XMLElemen %x\n",this );

+

 	XMLAttribute* attribute = rootAttribute;

 	while( attribute ) {

 		XMLAttribute* next = attribute->next;

 		delete attribute;

 		attribute = next;

 	}

-

-	XMLNode* child = firstChild;

-	while( child ) {

-		XMLNode* next = child->next;

-		delete child;

-		child = next;

-	}

 }