From d5237b30fc8eca9c56c8ee7f671cb00f7303c169 Mon Sep 17 00:00:00 2001 From: Sebastien Barre Date: Tue, 18 Apr 2006 11:50:39 -0400 Subject: [PATCH] ENH: try to bypass Microsoft assert() on isspace, isalpha, etc. --- Source/kwsys/SystemTools.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 93cc5b3dd..b68a9bfa8 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -836,7 +836,14 @@ kwsys_stl::string SystemTools::CapitalizedWords(const kwsys_stl::string& s) kwsys_stl::string n(s); for (size_t i = 0; i < s.size(); i++) { +#if defined(_MSC_VER) && defined (_MT) && defined (_DEBUG) + // MS has an assert that will fail if s[i] < 0; setting + // LC_CTYPE using setlocale() does *not* help. Painful. + if ((int)s[i] >= 0 && isalpha(s[i]) && + (i == 0 || ((int)s[i - 1] >= 0 && isspace(s[i - 1])))) +#else if (isalpha(s[i]) && (i == 0 || isspace(s[i - 1]))) +#endif { n[i] = static_cast(toupper(s[i])); } @@ -850,7 +857,14 @@ kwsys_stl::string SystemTools::UnCapitalizedWords(const kwsys_stl::string& s) kwsys_stl::string n(s); for (size_t i = 0; i < s.size(); i++) { +#if defined(_MSC_VER) && defined (_MT) && defined (_DEBUG) + // MS has an assert that will fail if s[i] < 0; setting + // LC_CTYPE using setlocale() does *not* help. Painful. + if ((int)s[i] >= 0 && isalpha(s[i]) && + (i == 0 || ((int)s[i - 1] >= 0 && isspace(s[i - 1])))) +#else if (isalpha(s[i]) && (i == 0 || isspace(s[i - 1]))) +#endif { n[i] = static_cast(tolower(s[i])); }