From 44d313212b48f7d447fb6c6d97df402ad2d9dd31 Mon Sep 17 00:00:00 2001 From: Max Bruckner Date: Sun, 30 Apr 2017 12:52:29 +0200 Subject: [PATCH] refactor cJSONUtils_strcasecmp --- cJSON_Utils.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/cJSON_Utils.c b/cJSON_Utils.c index 3b7cfbc..b69cfa0 100644 --- a/cJSON_Utils.c +++ b/cJSON_Utils.c @@ -46,25 +46,28 @@ static unsigned char* cJSONUtils_strdup(const unsigned char* const string) return copy; } -static int cJSONUtils_strcasecmp(const unsigned char *s1, const unsigned char *s2) +/* Case insensitive string comparison, doesn't consider two NULL pointers equal though */ +static int cJSONUtils_strcasecmp(const unsigned char *string1, const unsigned char *string2) { - if (!s1) - { - return (s1 == s2) ? 0 : 1; /* both NULL? */ - } - if (!s2) + if ((string1 == NULL) || (string2 == NULL)) { return 1; } - for(; tolower(*s1) == tolower(*s2); (void)++s1, ++s2) + + if (string1 == string2) { - if(*s1 == 0) + return 0; + } + + for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++) + { + if (*string1 == '\0') { return 0; } } - return tolower(*s1) - tolower(*s2); + return tolower(*string1) - tolower(*string2); } /* JSON Pointer implementation: */