Jelajahi Sumber

fix name parsing to accept additional lead characters

Lee Thomason (grinliz) 13 tahun lalu
induk
melakukan
5fbacbec06
2 mengubah file dengan 9 tambahan dan 7 penghapusan
  1. 3 7
      tinyxml2.cpp
  2. 6 0
      xmltest.cpp

+ 3 - 7
tinyxml2.cpp

@@ -134,16 +134,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;
 	}

+ 6 - 0
xmltest.cpp

@@ -940,6 +940,12 @@ 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 );
+	}
 	
 	// ----------- Performance tracking --------------
 	{