diff --git a/tinyxml2.cpp b/tinyxml2.cpp index be888f4..6dae0d9 100644 --- a/tinyxml2.cpp +++ b/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; } diff --git a/xmltest.cpp b/xmltest.cpp index 8155ef4..3144384 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -940,6 +940,13 @@ int main( int /*argc*/, const char ** /*argv*/ ) XMLTest( "QueryBoolText", boolValue, true, false ); } + { + const char* xml = "<_sub/><:sub/>"; + XMLDocument doc; + doc.Parse( xml ); + XMLTest( "Non-alpha element lead letter parses.", doc.Error(), false ); + } + // ----------- Whitespace ------------ { const char* xml = "" @@ -958,7 +965,6 @@ int main( int /*argc*/, const char ** /*argv*/ ) XMLTest( "Whitespace collapse", "This is ' text '", parent->GetText() ); } } - // ----------- Performance tracking -------------- {