Browse Source

fix merge

Lee Thomason (grinliz) 13 years ago
parent
commit
62d1c5a739
2 changed files with 10 additions and 8 deletions
  1. 3 7
      tinyxml2.cpp
  2. 7 1
      xmltest.cpp

+ 3 - 7
tinyxml2.cpp

@@ -136,16 +136,12 @@ char* StrPair::ParseName( char* p )
 		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;
 	}

+ 7 - 1
xmltest.cpp

@@ -940,6 +940,13 @@ int main( int /*argc*/, const char ** /*argv*/ )
 		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 @@ int main( int /*argc*/, const char ** /*argv*/ )
 			XMLTest( "Whitespace collapse", "This is ' text '", parent->GetText() );
 		}
 	}
-
 	
 	// ----------- Performance tracking --------------
 	{