message: Fix errors with sscanf format string in TinyXML
diff: @@ -610,9 +610,18 @@ void XMLUtil::ToStr( uint64_t v, char* buffer, int bufferSize )
  bool XMLUtil::ToInt(const char* str, int* value)
  {
  - if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%x" : "%d", value) == 1) {
  + if (IsPrefixHex(str)) {
  + unsigned v;
  + if (TIXML_SSCANF(str, "%x", &v) == 1) {
  + *value = static_cast<int>(v);
  return true;
  }
  + }
  + else {
  + if (TIXML_SSCANF(str, "%d", value) == 1) {
  + return true;
  + }
  + }
  return false;
  }
  @@ -670,11 +679,20 @@ bool XMLUtil::ToDouble( const char* str, double* value )
  bool XMLUtil::ToInt64(const char* str, int64_t* value)
  {
  + if (IsPrefixHex(str)) {
  + unsigned long long v = 0; // horrible syntax trick to make the compiler happy about %llx
  + if (TIXML_SSCANF(str, "%llx", &v) == 1) {
  + *value = static_cast<int64_t>(v);
  + return true;
  + }
  + }
  + else {
  long long v = 0; // horrible syntax trick to make the compiler happy about %lld
  - if (TIXML_SSCANF(str, IsPrefixHex(str) ? "%llx" : "%lld", &v) == 1) {
  + if (TIXML_SSCANF(str, "%lld", &v) == 1) {
  *value = static_cast<int64_t>(v);
  return true;
  }
  + }
  return false;
  }
  