diff --git a/cJSON_Utils.c b/cJSON_Utils.c index d07179fc6454d7d41ee960d784ff7032df5cb2aa..0fd18ab5fc1b9fa3d47f88adf0f5723c75ba7ca9 100644 --- a/cJSON_Utils.c +++ b/cJSON_Utils.c @@ -107,18 +107,20 @@ static int cJSONUtils_Pstrcasecmp(const unsigned char *name, const unsigned char return 0; } -static size_t cJSONUtils_PointerEncodedstrlen(const unsigned char *s) +/* calculate the length of a string if encoded as JSON pointer with ~0 and ~1 escape sequences */ +static size_t cJSONUtils_PointerEncodedstrlen(const unsigned char *string) { - size_t l = 0; - for (; *s; (void)s++, l++) + size_t length; + for (length = 0; *string != '\0'; (void)string++, length++) { - if ((*s == '~') || (*s == '/')) + /* character needs to be escaped? */ + if ((*string == '~') || (*string == '/')) { - l++; + length++; } } - return l; + return length; } static void cJSONUtils_PointerEncodedstrcpy(unsigned char *d, const unsigned char *s)