diff --git a/cJSON.c b/cJSON.c index a8327eead2cd8aa9e366d898755e241243067e83..9408edd962efa9e3f22ffc64413d1da60052e18b 100644 --- a/cJSON.c +++ b/cJSON.c @@ -39,11 +39,26 @@ const char *cJSON_GetErrorPtr(void) return global_ep; } -static int cJSON_strcasecmp(const char *s1,const char *s2) +/* case insensitive strcmp */ +static int cJSON_strcasecmp(const char *s1, const char *s2) { - if (!s1) return (s1==s2)?0:1;if (!s2) return 1; - for(; tolower(*s1) == tolower(*s2); ++s1, ++s2) if(*s1 == 0) return 0; - return tolower(*(const unsigned char *)s1) - tolower(*(const unsigned char *)s2); + if (!s1) + { + return (s1 == s2) ? 0 : 1; /* both NULL? */ + } + if (!s2) + { + return 1; + } + for(; tolower(*s1) == tolower(*s2); ++s1, ++s2) + { + if (*s1 == 0) + { + return 0; + } + } + + return tolower(*(const unsigned char *)s1) - tolower(*(const unsigned char *)s2); } static void *(*cJSON_malloc)(size_t sz) = malloc;