diff --git a/src/common/jsonapi.c b/src/common/jsonapi.c index 98e4ef0942..eeedc0645a 100644 --- a/src/common/jsonapi.c +++ b/src/common/jsonapi.c @@ -519,26 +519,23 @@ JsonParseErrorType json_lex(JsonLexContext *lex) { char *s; - int len; + char *const end = lex->input + lex->input_length; JsonParseErrorType result; /* Skip leading whitespace. */ s = lex->token_terminator; - len = s - lex->input; - while (len < lex->input_length && - (*s == ' ' || *s == '\t' || *s == '\n' || *s == '\r')) + while (s < end && (*s == ' ' || *s == '\t' || *s == '\n' || *s == '\r')) { if (*s++ == '\n') { ++lex->line_number; lex->line_start = s; } - len++; } lex->token_start = s; /* Determine token type. */ - if (len >= lex->input_length) + if (s >= end) { lex->token_start = NULL; lex->prev_token_terminator = lex->token_terminator; @@ -623,7 +620,7 @@ json_lex(JsonLexContext *lex) * the whole word as an unexpected token, rather than just * some unintuitive prefix thereof. */ - for (p = s; p - s < lex->input_length - len && JSON_ALPHANUMERIC_CHAR(*p); p++) + for (p = s; p < end && JSON_ALPHANUMERIC_CHAR(*p); p++) /* skip */ ; /* @@ -672,7 +669,7 @@ static inline JsonParseErrorType json_lex_string(JsonLexContext *lex) { char *s; - int len; + char *const end = lex->input + lex->input_length; int hi_surrogate = -1; if (lex->strval != NULL) @@ -680,13 +677,11 @@ json_lex_string(JsonLexContext *lex) Assert(lex->input_length > 0); s = lex->token_start; - len = lex->token_start - lex->input; for (;;) { s++; - len++; /* Premature end of the string. */ - if (len >= lex->input_length) + if (s >= end) { lex->token_terminator = s; return JSON_INVALID_TOKEN; @@ -704,8 +699,7 @@ json_lex_string(JsonLexContext *lex) { /* OK, we have an escape character. */ s++; - len++; - if (len >= lex->input_length) + if (s >= end) { lex->token_terminator = s; return JSON_INVALID_TOKEN; @@ -718,8 +712,7 @@ json_lex_string(JsonLexContext *lex) for (i = 1; i <= 4; i++) { s++; - len++; - if (len >= lex->input_length) + if (s >= end) { lex->token_terminator = s; return JSON_INVALID_TOKEN;