Author: oxygene Date: Wed Sep 8 12:27:13 2010 New Revision: 5785 URL: https://tracker.coreboot.org/trac/coreboot/changeset/5785
Log: Changes to str*cmp functions. Fixes a couple more corner cases.
Signed-off-by: Liu Tao liutao1980@gmail.com Acked-by: Patrick Georgi patrick.georgi@coresystems.de
Modified: trunk/payloads/libpayload/libc/string.c
Modified: trunk/payloads/libpayload/libc/string.c ============================================================================== --- trunk/payloads/libpayload/libc/string.c Wed Sep 8 01:27:59 2010 (r5784) +++ trunk/payloads/libpayload/libc/string.c Wed Sep 8 12:27:13 2010 (r5785) @@ -89,14 +89,15 @@ */ int strcasecmp(const char *s1, const char *s2) { - int i; + int i, res;
- for (i = 0; s1[i] != '\0'; i++) { - if (tolower(s1[i]) != tolower(s2[i])) - return s1[i] - s2[i]; + for (i = 0; 1; i++) { + res = tolower(s1[i]) - tolower(s2[i]); + if (res || (s1[i] == '\0')) + break; }
- return 0; + return res; }
/** @@ -109,14 +110,16 @@ */ int strncasecmp(const char *s1, const char *s2, size_t maxlen) { - int i; + int i, res;
+ res = 0; for (i = 0; i < maxlen; i++) { - if (tolower(s1[i]) != tolower(s2[i])) - return s1[i] - s2[i]; + res = tolower(s1[i]) - tolower(s2[i]); + if (res || (s1[i] == '\0')) + break; }
- return s1[i] - s2[i]; + return res; }
/** @@ -130,14 +133,15 @@ */ int strcmp(const char *s1, const char *s2) { - int i; + int i, res;
- for (i = 0; s1[i] != '\0'; i++) { - if (s1[i] != s2[i]) - return s1[i] - s2[i]; + for (i = 0; 1; i++) { + res = s1[i] - s2[i]; + if (res || (s1[i] == '\0')) + break; }
- return s1[i] - s2[i]; + return res; }
/** @@ -150,14 +154,16 @@ */ int strncmp(const char *s1, const char *s2, size_t maxlen) { - int i; + int i, res;
+ res = 0; for (i = 0; i < maxlen; i++) { - if (s1[i] != s2[i]) - return s1[i] - s2[i]; + res = s1[i] - s2[i]; + if (res || (s1[i] == '\0')) + break; }
- return 0; + return res; }
/**