Lee Thomason 5 лет назад
Родитель
Сommit
18468b8cc4
3 измененных файлов с 11 добавлено и 13 удалено
  1. 4 4
      tinyxml2.cpp
  2. 2 4
      tinyxml2.h
  3. 5 5
      xmltest.cpp

+ 4 - 4
tinyxml2.cpp

@@ -608,17 +608,17 @@ void XMLUtil::ToStr( uint64_t v, char* buffer, int bufferSize )
     TIXML_SNPRINTF(buffer, bufferSize, "%llu", (long long)v);
 }
 
-bool XMLUtil::ToInt( const char* str, int* value )
+bool XMLUtil::ToInt(const char* str, int* value)
 {
-    if ( TIXML_SSCANF( str, IsPrefixHex(str) ? "%x" : "%d", value ) == 1 ) {
+    if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%x" : "%d", value) == 1) {
         return true;
     }
     return false;
 }
 
-bool XMLUtil::ToUnsigned( const char* str, unsigned *value )
+bool XMLUtil::ToUnsigned(const char* str, unsigned* value)
 {
-    if ( TIXML_SSCANF( str, IsPrefixHex(str) ? "%x" : "%u", value ) == 1 ) {
+    if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%x" : "%u", value) == 1) {
         return true;
     }
     return false;

+ 2 - 4
tinyxml2.h

@@ -591,10 +591,8 @@ public:
     }
 
     inline static bool IsPrefixHex( const char* p) {
-        while (p && *p != '\0' && !isdigit(*p)) {
-            ++p;
-        }
-        return *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
+        p = SkipWhiteSpace(p, 0);
+        return p && *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
     }
 
     inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX )  {

+ 5 - 5
xmltest.cpp

@@ -1675,21 +1675,21 @@ int main( int argc, const char ** argv )
     }
 
     {
-        //API:IntText(),UnsignedText(),Int64Text(), hex value test
-        const char* xml = "<point> <IntText>  -0x2020</IntText> <UnsignedText>0x2020</UnsignedText> \
-						   <Int64Text> +0x1234</Int64Text></point>";
+        // hex value test
+        const char* xml = "<point> <IntText>  0x2020</IntText> <UnsignedText>0X2020</UnsignedText> \
+						   <Int64Text> 0x1234</Int64Text></point>";
         XMLDocument doc;
         doc.Parse(xml);
 
         const XMLElement* pointElement = doc.RootElement();
         int test1 = pointElement->FirstChildElement("IntText")->IntText();
-        XMLTest("IntText() hex value test", -0x2020, test1);
+        XMLTest("IntText() hex value test", 0x2020, test1);
 
         unsigned test2 = pointElement->FirstChildElement("UnsignedText")->UnsignedText();
         XMLTest("UnsignedText() hex value test", static_cast<unsigned>(0x2020), test2);
 
         int64_t test3 = pointElement->FirstChildElement("Int64Text")->Int64Text();
-        XMLTest("Int64Text() hex value test", static_cast<int64_t>(+0x1234), test3);
+        XMLTest("Int64Text() hex value test", static_cast<int64_t>(0x1234), test3);
     }
 
 	{