From 18468b8cc463f49808c27ab4d21634eb50a20ad6 Mon Sep 17 00:00:00 2001 From: Lee Thomason Date: Sat, 13 Jun 2020 17:35:21 -0700 Subject: [PATCH] minor changes to hex parsing --- tinyxml2.cpp | 8 ++++---- tinyxml2.h | 6 ++---- xmltest.cpp | 10 +++++----- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 5050064..b9c94e9 100755 --- a/tinyxml2.cpp +++ b/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; diff --git a/tinyxml2.h b/tinyxml2.h index c577af4..3c702ec 100755 --- a/tinyxml2.h +++ b/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 ) { diff --git a/xmltest.cpp b/xmltest.cpp index aaed91f..77cd6d7 100755 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -1675,21 +1675,21 @@ int main( int argc, const char ** argv ) } { - //API:IntText(),UnsignedText(),Int64Text(), hex value test - const char* xml = " -0x2020 0x2020 \ - +0x1234"; + // hex value test + const char* xml = " 0x2020 0X2020 \ + 0x1234"; 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(0x2020), test2); int64_t test3 = pointElement->FirstChildElement("Int64Text")->Int64Text(); - XMLTest("Int64Text() hex value test", static_cast(+0x1234), test3); + XMLTest("Int64Text() hex value test", static_cast(0x1234), test3); } {