From 63d718e9f2366ab01d8e8dbf9c551a28f98e4978 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 5 Feb 2009 17:09:28 -0500 Subject: [PATCH] COMP: Avoid warning about signed-char comparison On some compilers 'char' is signed and is therefore always equal to or less than 0x7f. In order to avoid the compiler warning we perform the comparison with an unsigned char type. --- Source/cmXMLSafe.cxx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Source/cmXMLSafe.cxx b/Source/cmXMLSafe.cxx index 861d75c0b..21b6bc33c 100644 --- a/Source/cmXMLSafe.cxx +++ b/Source/cmXMLSafe.cxx @@ -60,7 +60,7 @@ cmsys_ios::ostream& operator<<(cmsys_ios::ostream& os, cmXMLSafe const& self) char const* last = self.Data + self.Size; for(char const* ci = first; ci != last; ++ci) { - char c = *ci; + unsigned char c = static_cast(*ci); switch(c) { case '&': os << "&"; break; @@ -74,16 +74,15 @@ cmsys_ios::ostream& operator<<(cmsys_ios::ostream& os, cmXMLSafe const& self) default: if(c >= 0x20 && c <= 0x7f) { - os.put(c); + os.put(static_cast(c)); } else { // TODO: More complete treatment of program output character // encoding. Instead of escaping these bytes, we should // handle the current locale and its encoding. - unsigned char uc = static_cast(c); char buf[16]; - sprintf(buf, "&#x%hx;", static_cast(uc)); + sprintf(buf, "&#x%hx;", static_cast(c)); os << buf; } break;