new element loop
diff --git a/xmltest.cpp b/xmltest.cpp
index d244efa..40ac1a9 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -129,7 +129,7 @@
 			printf( "----------------------------------------------\n" );

 		}

 	}

-

+#if 1

 	{

 		static const char* test = "<!--hello world\n"

 			                      "          line 2\r"

@@ -358,283 +358,285 @@
 		XMLTest( "UTF-8: Verified multi-language round trip.", 1, okay );

 	}

 

-	// --------GetText()-----------
-	{
-		const char* str = "<foo>This is  text</foo>";
-		XMLDocument doc;
-		doc.Parse( str );
-		const XMLElement* element = doc.RootElement();
-
-		XMLTest( "GetText() normal use.", "This is  text", element->GetText() );
-
-		str = "<foo><b>This is text</b></foo>";
-		doc.Parse( str );
-		element = doc.RootElement();
-
-		XMLTest( "GetText() contained element.", element->GetText() == 0, true );
-	}
+	// --------GetText()-----------

+	{

+		const char* str = "<foo>This is  text</foo>";

+		XMLDocument doc;

+		doc.Parse( str );

+		const XMLElement* element = doc.RootElement();

+

+		XMLTest( "GetText() normal use.", "This is  text", element->GetText() );

+

+		str = "<foo><b>This is text</b></foo>";

+		doc.Parse( str );

+		element = doc.RootElement();

+

+		XMLTest( "GetText() contained element.", element->GetText() == 0, true );

+	}

 

 

-	// ---------- CDATA ---------------
-	{
-		const char* str =	"<xmlElement>"
-								"<![CDATA["
-									"I am > the rules!\n"
-									"...since I make symbolic puns"
-								"]]>"
-							"</xmlElement>";
-		XMLDocument doc;
-		doc.Parse( str );
-		doc.Print();
-
-		XMLTest( "CDATA parse.", doc.FirstChildElement()->FirstChild()->Value(), 
-								 "I am > the rules!\n...since I make symbolic puns",
-								 false );
-	}
+	// ---------- CDATA ---------------

+	{

+		const char* str =	"<xmlElement>"

+								"<![CDATA["

+									"I am > the rules!\n"

+									"...since I make symbolic puns"

+								"]]>"

+							"</xmlElement>";

+		XMLDocument doc;

+		doc.Parse( str );

+		doc.Print();

 

-	// ----------- CDATA -------------
-	{
-		const char* str =	"<xmlElement>"
-								"<![CDATA["
-									"<b>I am > the rules!</b>\n"
-									"...since I make symbolic puns"
-								"]]>"
-							"</xmlElement>";
-		XMLDocument doc;
-		doc.Parse( str );
-		doc.Print();
-
-		XMLTest( "CDATA parse. [ tixml1:1480107 ]", doc.FirstChildElement()->FirstChild()->Value(), 
-								 "<b>I am > the rules!</b>\n...since I make symbolic puns",
+		XMLTest( "CDATA parse.", doc.FirstChildElement()->FirstChild()->Value(), 

+								 "I am > the rules!\n...since I make symbolic puns",

 								 false );

 	}

 

-	// InsertAfterChild causes crash.
-	{
-		// InsertBeforeChild and InsertAfterChild causes crash.
-		XMLDocument doc;
-		XMLElement* parent = doc.NewElement( "Parent" );
-		doc.InsertFirstChild( parent );
-
-		XMLElement* childText0 = doc.NewElement( "childText0" );
-		XMLElement* childText1 = doc.NewElement( "childText1" );
-
-		XMLNode* childNode0 = parent->InsertEndChild( childText0 );
-		XMLNode* childNode1 = parent->InsertAfterChild( childNode0, childText1 );
-
-		XMLTest( "Test InsertAfterChild on empty node. ", ( childNode1 == parent->LastChild() ), true );
-	}
-
-	{
-		// Entities not being written correctly.
-		// From Lynn Allen
-
-		const char* passages =
-			"<?xml version=\"1.0\" standalone=\"no\" ?>"
-			"<passages count=\"006\" formatversion=\"20020620\">"
-				"<psg context=\"Line 5 has &quot;quotation marks&quot; and &apos;apostrophe marks&apos;."
-				" It also has &lt;, &gt;, and &amp;, as well as a fake copyright &#xA9;.\"> </psg>"
-			"</passages>";
-
-		XMLDocument doc;
-		doc.Parse( passages );
-		XMLElement* psg = doc.RootElement()->FirstChildElement();
-		const char* context = psg->Attribute( "context" );
-		const char* expected = "Line 5 has \"quotation marks\" and 'apostrophe marks'. It also has <, >, and &, as well as a fake copyright \xC2\xA9.";
-
-		XMLTest( "Entity transformation: read. ", expected, context, true );
-
-		FILE* textfile = fopen( "textfile.txt", "w" );
-		if ( textfile )
-		{
-			XMLStreamer streamer( textfile );
-			psg->Accept( &streamer );
-			fclose( textfile );
-		}
-		textfile = fopen( "textfile.txt", "r" );
-		TIXMLASSERT( textfile );
-		if ( textfile )
-		{
-			char buf[ 1024 ];
-			fgets( buf, 1024, textfile );
-			XMLTest( "Entity transformation: write. ",
-					 "<psg context=\"Line 5 has &quot;quotation marks&quot; and &apos;apostrophe marks&apos;."
-					 " It also has &lt;, &gt;, and &amp;, as well as a fake copyright \xC2\xA9.\"/>\n",
-					 buf, false );
-		}
-		fclose( textfile );
-	}
-
-	{
-        const char* test = "<?xml version='1.0'?><a.elem xmi.version='2.0'/>";
-
-		XMLDocument doc;
-        doc.Parse( test );
-        XMLTest( "dot in names", doc.Error(), 0);
-        XMLTest( "dot in names", doc.FirstChildElement()->Name(), "a.elem" );
-        XMLTest( "dot in names", doc.FirstChildElement()->Attribute( "xmi.version" ), "2.0" );
-	}
-
-	{
-        const char* test = "<element><Name>1.1 Start easy ignore fin thickness&#xA;</Name></element>";
-
-        XMLDocument doc;
-		doc.Parse( test );
-
-		XMLText* text = doc.FirstChildElement()->FirstChildElement()->FirstChild()->ToText();
-		XMLTest( "Entity with one digit.",
-				 text->Value(), "1.1 Start easy ignore fin thickness\n",
-				 false );
-    }
-
-	{
-		// DOCTYPE not preserved (950171)
-		// 
-		const char* doctype =
-			"<?xml version=\"1.0\" ?>"
-			"<!DOCTYPE PLAY SYSTEM 'play.dtd'>"
-			"<!ELEMENT title (#PCDATA)>"
-			"<!ELEMENT books (title,authors)>"
-			"<element />";
-
-		XMLDocument doc;
-		doc.Parse( doctype );
-		doc.SaveFile( "test7.xml" );
-		doc.DeleteChild( doc.RootElement() );
-		doc.LoadFile( "test7.xml" );
-		doc.Print();
-		
-		const XMLUnknown* decl = doc.FirstChild()->NextSibling()->ToUnknown();
-		XMLTest( "Correct value of unknown.", "DOCTYPE PLAY SYSTEM 'play.dtd'", decl->Value() );
-
-	}
+	// ----------- CDATA -------------

+	{

+		const char* str =	"<xmlElement>"

+								"<![CDATA["

+									"<b>I am > the rules!</b>\n"

+									"...since I make symbolic puns"

+								"]]>"

+							"</xmlElement>";

+		XMLDocument doc;

+		doc.Parse( str );

+		doc.Print();

+

+		XMLTest( "CDATA parse. [ tixml1:1480107 ]", doc.FirstChildElement()->FirstChild()->Value(), 

+								 "<b>I am > the rules!</b>\n...since I make symbolic puns",

+								 false );

+	}

+

+	// InsertAfterChild causes crash.

+	{

+		// InsertBeforeChild and InsertAfterChild causes crash.

+		XMLDocument doc;

+		XMLElement* parent = doc.NewElement( "Parent" );

+		doc.InsertFirstChild( parent );

+

+		XMLElement* childText0 = doc.NewElement( "childText0" );

+		XMLElement* childText1 = doc.NewElement( "childText1" );

+

+		XMLNode* childNode0 = parent->InsertEndChild( childText0 );

+		XMLNode* childNode1 = parent->InsertAfterChild( childNode0, childText1 );

+

+		XMLTest( "Test InsertAfterChild on empty node. ", ( childNode1 == parent->LastChild() ), true );

+	}

 

 	{

-		// Comments do not stream out correctly.
-		const char* doctype = 
-			"<!-- Somewhat<evil> -->";
-		XMLDocument doc;
-		doc.Parse( doctype );
-
-		XMLComment* comment = doc.FirstChild()->ToComment();
-
-		XMLTest( "Comment formatting.", " Somewhat<evil> ", comment->Value() );
-	}
-	{
-		// Double attributes
-		const char* doctype = "<element attr='red' attr='blue' />";
-
-		XMLDocument doc;
-		doc.Parse( doctype );
-		
-		XMLTest( "Parsing repeated attributes.", ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );	// is an  error to tinyxml (didn't use to be, but caused issues)
-	}
-
-	{
-		// Embedded null in stream.
-		const char* doctype = "<element att\0r='red' attr='blue' />";
-
-		XMLDocument doc;
-		doc.Parse( doctype );
-		XMLTest( "Embedded null throws error.", true, doc.Error() );
-	}
-
-	{
-		// Empty documents should return TIXML_ERROR_PARSING_EMPTY, bug 1070717
-		const char* str = "    ";
-		XMLDocument doc;
-		doc.Parse( str );
-		XMLTest( "Empty document error", ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
-	}
+		// Entities not being written correctly.

+		// From Lynn Allen

 

-	{
-		// Low entities
-		XMLDocument doc;
-		doc.Parse( "<test>&#x0e;</test>" );
-		const char result[] = { 0x0e, 0 };
-		XMLTest( "Low entities.", doc.FirstChildElement()->GetText(), result );
-		doc.Print();
-	}
+		const char* passages =

+			"<?xml version=\"1.0\" standalone=\"no\" ?>"

+			"<passages count=\"006\" formatversion=\"20020620\">"

+				"<psg context=\"Line 5 has &quot;quotation marks&quot; and &apos;apostrophe marks&apos;."

+				" It also has &lt;, &gt;, and &amp;, as well as a fake copyright &#xA9;.\"> </psg>"

+			"</passages>";

 

-	{
-		// Attribute values with trailing quotes not handled correctly
-		XMLDocument doc;
-		doc.Parse( "<foo attribute=bar\" />" );
-		XMLTest( "Throw error with bad end quotes.", doc.Error(), true );
-	}
+		XMLDocument doc;

+		doc.Parse( passages );

+		XMLElement* psg = doc.RootElement()->FirstChildElement();

+		const char* context = psg->Attribute( "context" );

+		const char* expected = "Line 5 has \"quotation marks\" and 'apostrophe marks'. It also has <, >, and &, as well as a fake copyright \xC2\xA9.";

 

-	{
-		// [ 1663758 ] Failure to report error on bad XML
-		XMLDocument xml;
-		xml.Parse("<x>");
-		XMLTest("Missing end tag at end of input", xml.Error(), true);
-		xml.Parse("<x> ");
-		XMLTest("Missing end tag with trailing whitespace", xml.Error(), true);
-		xml.Parse("<x></y>");
-		XMLTest("Mismatched tags", xml.ErrorID(), ERROR_MISMATCHED_ELEMENT);
-	} 
-
-
-	{
-		// [ 1475201 ] TinyXML parses entities in comments
-		XMLDocument xml;
-		xml.Parse("<!-- declarations for <head> & <body> -->"
-				  "<!-- far &amp; away -->" );
-
-		XMLNode* e0 = xml.FirstChild();
-		XMLNode* e1 = e0->NextSibling();
-		XMLComment* c0 = e0->ToComment();
-		XMLComment* c1 = e1->ToComment();
-
-		XMLTest( "Comments ignore entities.", " declarations for <head> & <body> ", c0->Value(), true );
-		XMLTest( "Comments ignore entities.", " far &amp; away ", c1->Value(), true );
-	}
-
-	{
-		XMLDocument xml;
-		xml.Parse( "<Parent>"
-						"<child1 att=''/>"
-						"<!-- With this comment, child2 will not be parsed! -->"
-						"<child2 att=''/>"
-					"</Parent>" );
-		int count = 0;
-
-		for( XMLNode* ele = xml.FirstChildElement( "Parent" )->FirstChild();
-			 ele;
-			 ele = ele->NextSibling() )
-		{
-			++count;
-		}
-
-		XMLTest( "Comments iterate correctly.", 3, count );
-	}
-
-	{
-		// trying to repro ]1874301]. If it doesn't go into an infinite loop, all is well.
-		unsigned char buf[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?><feed><![CDATA[Test XMLblablablalblbl";
-		buf[60] = 239;
-		buf[61] = 0;
-
-		XMLDocument doc;
-		doc.Parse( (const char*)buf);
-	} 
-
-
-	{
-		// bug 1827248 Error while parsing a little bit malformed file
-		// Actually not malformed - should work.
-		XMLDocument xml;
-		xml.Parse( "<attributelist> </attributelist >" );
-		XMLTest( "Handle end tag whitespace", false, xml.Error() );
-	}
-
-	{
-		// This one must not result in an infinite loop
-		XMLDocument xml;
-		xml.Parse( "<infinite>loop" );
-		XMLTest( "Infinite loop test.", true, true );
-	}
+		XMLTest( "Entity transformation: read. ", expected, context, true );

 

+		FILE* textfile = fopen( "textfile.txt", "w" );

+		if ( textfile )

+		{

+			XMLStreamer streamer( textfile );

+			psg->Accept( &streamer );

+			fclose( textfile );

+		}

+		textfile = fopen( "textfile.txt", "r" );

+		TIXMLASSERT( textfile );

+		if ( textfile )

+		{

+			char buf[ 1024 ];

+			fgets( buf, 1024, textfile );

+			XMLTest( "Entity transformation: write. ",

+					 "<psg context=\"Line 5 has &quot;quotation marks&quot; and &apos;apostrophe marks&apos;."

+					 " It also has &lt;, &gt;, and &amp;, as well as a fake copyright \xC2\xA9.\"/>\n",

+					 buf, false );

+		}

+		fclose( textfile );

+	}

+

+	{

+        const char* test = "<?xml version='1.0'?><a.elem xmi.version='2.0'/>";

+

+		XMLDocument doc;

+        doc.Parse( test );

+        XMLTest( "dot in names", doc.Error(), 0);

+        XMLTest( "dot in names", doc.FirstChildElement()->Name(), "a.elem" );

+        XMLTest( "dot in names", doc.FirstChildElement()->Attribute( "xmi.version" ), "2.0" );

+	}

+

+	{

+        const char* test = "<element><Name>1.1 Start easy ignore fin thickness&#xA;</Name></element>";

+

+        XMLDocument doc;

+		doc.Parse( test );

+

+		XMLText* text = doc.FirstChildElement()->FirstChildElement()->FirstChild()->ToText();

+		XMLTest( "Entity with one digit.",

+				 text->Value(), "1.1 Start easy ignore fin thickness\n",

+				 false );

+    }

+

+	{

+		// DOCTYPE not preserved (950171)

+		// 

+		const char* doctype =

+			"<?xml version=\"1.0\" ?>"

+			"<!DOCTYPE PLAY SYSTEM 'play.dtd'>"

+			"<!ELEMENT title (#PCDATA)>"

+			"<!ELEMENT books (title,authors)>"

+			"<element />";

+

+		XMLDocument doc;

+		doc.Parse( doctype );

+		doc.SaveFile( "test7.xml" );

+		doc.DeleteChild( doc.RootElement() );

+		doc.LoadFile( "test7.xml" );

+		doc.Print();

+		

+		const XMLUnknown* decl = doc.FirstChild()->NextSibling()->ToUnknown();

+		XMLTest( "Correct value of unknown.", "DOCTYPE PLAY SYSTEM 'play.dtd'", decl->Value() );

+

+	}

+

+	{

+		// Comments do not stream out correctly.

+		const char* doctype = 

+			"<!-- Somewhat<evil> -->";

+		XMLDocument doc;

+		doc.Parse( doctype );

+

+		XMLComment* comment = doc.FirstChild()->ToComment();

+

+		XMLTest( "Comment formatting.", " Somewhat<evil> ", comment->Value() );

+	}

+	{

+		// Double attributes

+		const char* doctype = "<element attr='red' attr='blue' />";

+

+		XMLDocument doc;

+		doc.Parse( doctype );

+		

+		XMLTest( "Parsing repeated attributes.", ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );	// is an  error to tinyxml (didn't use to be, but caused issues)

+	}

+

+	{

+		// Embedded null in stream.

+		const char* doctype = "<element att\0r='red' attr='blue' />";

+

+		XMLDocument doc;

+		doc.Parse( doctype );

+		XMLTest( "Embedded null throws error.", true, doc.Error() );

+	}

+

+	{

+		// Empty documents should return TIXML_ERROR_PARSING_EMPTY, bug 1070717

+		const char* str = "    ";

+		XMLDocument doc;

+		doc.Parse( str );

+		XMLTest( "Empty document error", ERROR_EMPTY_DOCUMENT, doc.ErrorID() );

+	}

+

+	{

+		// Low entities

+		XMLDocument doc;

+		doc.Parse( "<test>&#x0e;</test>" );

+		const char result[] = { 0x0e, 0 };

+		XMLTest( "Low entities.", doc.FirstChildElement()->GetText(), result );

+		doc.Print();

+	}

+

+	{

+		// Attribute values with trailing quotes not handled correctly

+		XMLDocument doc;

+		doc.Parse( "<foo attribute=bar\" />" );

+		XMLTest( "Throw error with bad end quotes.", doc.Error(), true );

+	}

+

+	{

+		// [ 1663758 ] Failure to report error on bad XML

+		XMLDocument xml;

+		xml.Parse("<x>");

+		XMLTest("Missing end tag at end of input", xml.Error(), true);

+		xml.Parse("<x> ");

+		XMLTest("Missing end tag with trailing whitespace", xml.Error(), true);

+		xml.Parse("<x></y>");

+		XMLTest("Mismatched tags", xml.ErrorID(), ERROR_MISMATCHED_ELEMENT);

+	} 

+

+

+	{

+		// [ 1475201 ] TinyXML parses entities in comments

+		XMLDocument xml;

+		xml.Parse("<!-- declarations for <head> & <body> -->"

+				  "<!-- far &amp; away -->" );

+

+		XMLNode* e0 = xml.FirstChild();

+		XMLNode* e1 = e0->NextSibling();

+		XMLComment* c0 = e0->ToComment();

+		XMLComment* c1 = e1->ToComment();

+

+		XMLTest( "Comments ignore entities.", " declarations for <head> & <body> ", c0->Value(), true );

+		XMLTest( "Comments ignore entities.", " far &amp; away ", c1->Value(), true );

+	}

+

+	{

+		XMLDocument xml;

+		xml.Parse( "<Parent>"

+						"<child1 att=''/>"

+						"<!-- With this comment, child2 will not be parsed! -->"

+						"<child2 att=''/>"

+					"</Parent>" );

+		xml.Print();

+

+		int count = 0;

+

+		for( XMLNode* ele = xml.FirstChildElement( "Parent" )->FirstChild();

+			 ele;

+			 ele = ele->NextSibling() )

+		{

+			++count;

+		}

+

+		XMLTest( "Comments iterate correctly.", 3, count );

+	}

+

+	{

+		// trying to repro ]1874301]. If it doesn't go into an infinite loop, all is well.

+		unsigned char buf[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?><feed><![CDATA[Test XMLblablablalblbl";

+		buf[60] = 239;

+		buf[61] = 0;

+

+		XMLDocument doc;

+		doc.Parse( (const char*)buf);

+	} 

+

+

+	{

+		// bug 1827248 Error while parsing a little bit malformed file

+		// Actually not malformed - should work.

+		XMLDocument xml;

+		xml.Parse( "<attributelist> </attributelist >" );

+		XMLTest( "Handle end tag whitespace", false, xml.Error() );

+	}

+

+	{

+		// This one must not result in an infinite loop

+		XMLDocument xml;

+		xml.Parse( "<infinite>loop" );

+		XMLTest( "Infinite loop test.", true, true );

+	}

+#endif

 	#if defined( WIN32 )

 		_CrtMemCheckpoint( &endMemState );  

 		//_CrtMemDumpStatistics( &endMemState );