fix merge
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index be888f4..6dae0d9 100644
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -136,16 +136,12 @@
 		return 0;

 	}

 

-	if ( !XMLUtil::IsAlpha( *p ) ) {

-		return 0;

-	}

-

 	while( *p && (

 			   XMLUtil::IsAlphaNum( (unsigned char) *p ) 

 			|| *p == '_'

-			|| *p == '-'

-			|| *p == '.'

-			|| *p == ':' ))

+			|| *p == ':'

+			|| (*p == '-' && p>start )		// can be in a name, but not lead it.

+			|| (*p == '.' && p>start ) ))	// can be in a name, but not lead it.

 	{

 		++p;

 	}

diff --git a/xmltest.cpp b/xmltest.cpp
index 8155ef4..3144384 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -940,6 +940,13 @@
 		XMLTest( "QueryBoolText", boolValue, true,					false );

 	}

 

+	{

+		const char* xml = "<element><_sub/><:sub/><sub:sub/><sub-sub/></element>";

+		XMLDocument doc;

+		doc.Parse( xml );

+		XMLTest( "Non-alpha element lead letter parses.", doc.Error(), false );

+	}

+

 	// ----------- Whitespace ------------

 	{

 		const char* xml = "<element>"

@@ -958,7 +965,6 @@
 			XMLTest( "Whitespace collapse", "This is ' text '", parent->GetText() );

 		}

 	}

-

 	

 	// ----------- Performance tracking --------------

 	{