[PPL-devel] [GIT] ppl/ppl(master): Improved strcaseeq implementation.

Abramo Bagnara abramo.bagnara at gmail.com
Thu Feb 23 15:35:59 CET 2012


Module: ppl/ppl
Branch: master
Commit: c5fabffdb88abe18d5df5e2cdf5360361f61858b
URL:    http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=c5fabffdb88abe18d5df5e2cdf5360361f61858b

Author: Abramo Bagnara <abramo.bagnara at gmail.com>
Date:   Thu Feb 23 15:35:54 2012 +0100

Improved strcaseeq implementation.

---

 src/ppl-config.cc.in |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/ppl-config.cc.in b/src/ppl-config.cc.in
index 167d515..448f354 100644
--- a/src/ppl-config.cc.in
+++ b/src/ppl-config.cc.in
@@ -164,16 +164,19 @@ void internal_error() {
   fatal("internal error: please submit a bug report to ppl-devel at cs.unipr.it");
 }
 
+inline char to_lower(char c) {
+  return static_cast<char>(tolower(static_cast<int>(static_cast<unsigned char>(c))));
+}
+
 bool
 strcaseeq(const char* s1, const char* s2) {
-  while (*s1 != 0 && *s2 != 0
-	 && tolower(static_cast<unsigned char>(*s1))
-	 == tolower(static_cast<unsigned char>(*s2))) {
+  while (*s1 != 0) {
+    if (*s2 == 0 || to_lower(*s1) != to_lower(*s2))
+      return false;
     ++s1;
     ++s2;
   }
-  return tolower(static_cast<unsigned char>(*s1))
-    == tolower(static_cast<unsigned char>(*s2));
+  return *s2 == 0;
 }
 
 void




More information about the PPL-devel mailing list