From 0fe604c5bc24d0d4da4f27ac508cdbc200c1be66 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Thu, 26 Apr 2018 19:11:28 +0300 Subject: [PATCH] Adding const qualifiers to njs_number_dec_parse() and friends. The functions which call njs_number_dec_parse() and friends are changed accordingly. --- njs/njs_json.c | 90 ++++++++++++++++++++++++++---------------------- njs/njs_lexer.c | 9 +++-- njs/njs_number.c | 37 +++++++++++--------- njs/njs_number.h | 11 +++--- njs/njs_parser.c | 7 ++-- njs/njs_string.c | 20 +++++------ njs/njs_string.h | 6 ++-- 7 files changed, 98 insertions(+), 82 deletions(-) diff --git a/njs/njs_json.c b/njs/njs_json.c index 1f704155..71c9b7a0 100644 --- a/njs/njs_json.c +++ b/njs/njs_json.c @@ -32,8 +32,8 @@ typedef struct { njs_vm_t *vm; nxt_mem_cache_pool_t *pool; nxt_uint_t depth; - u_char *start; - u_char *end; + const u_char *start; + const u_char *end; } njs_json_parse_ctx_t; @@ -110,18 +110,19 @@ typedef struct { } njs_json_stringify_t; -static u_char *njs_json_parse_value(njs_json_parse_ctx_t *ctx, - njs_value_t *value, u_char *p); -static u_char *njs_json_parse_object(njs_json_parse_ctx_t *ctx, - njs_value_t *value, u_char *p); -static u_char *njs_json_parse_array(njs_json_parse_ctx_t *ctx, - njs_value_t *value, u_char *p); -static u_char *njs_json_parse_string(njs_json_parse_ctx_t *ctx, - njs_value_t *value, u_char *p); -static u_char *njs_json_parse_number(njs_json_parse_ctx_t *ctx, - njs_value_t *value, u_char *p); +static const u_char *njs_json_parse_value(njs_json_parse_ctx_t *ctx, + njs_value_t *value, const u_char *p); +static const u_char *njs_json_parse_object(njs_json_parse_ctx_t *ctx, + njs_value_t *value, const u_char *p); +static const u_char *njs_json_parse_array(njs_json_parse_ctx_t *ctx, + njs_value_t *value, const u_char *p); +static const u_char *njs_json_parse_string(njs_json_parse_ctx_t *ctx, + njs_value_t *value, const u_char *p); +static const u_char *njs_json_parse_number(njs_json_parse_ctx_t *ctx, + njs_value_t *value, const u_char *p); nxt_inline uint32_t njs_json_unicode(const u_char *p); -static u_char *njs_json_skip_space(u_char *start, u_char *end); +static const u_char *njs_json_skip_space(const u_char *start, + const u_char *end); static njs_ret_t njs_json_parse_continuation(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused); @@ -131,7 +132,7 @@ static njs_json_state_t *njs_json_push_parse_state(njs_vm_t *vm, njs_json_parse_t *parse, njs_value_t *value); static njs_json_state_t *njs_json_pop_parse_state(njs_json_parse_t *parse); static void njs_json_parse_exception(njs_json_parse_ctx_t *ctx, - const char* msg, u_char *pos); + const char* msg, const u_char *pos); static njs_ret_t njs_json_stringify_continuation(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused); @@ -179,8 +180,8 @@ static njs_ret_t njs_json_parse(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused) { - u_char *p, *end; njs_value_t arg, *value, *wrapper; + const u_char *p, *end; njs_json_parse_t *parse; njs_string_prop_t string; njs_json_parse_ctx_t ctx; @@ -348,8 +349,9 @@ memory_error: } -static u_char * -njs_json_parse_value(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) +static const u_char * +njs_json_parse_value(njs_json_parse_ctx_t *ctx, njs_value_t *value, + const u_char *p) { switch (*p) { case '{': @@ -401,8 +403,9 @@ error: } -static u_char * -njs_json_parse_object(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) +static const u_char * +njs_json_parse_object(njs_json_parse_ctx_t *ctx, njs_value_t *value, + const u_char *p) { nxt_int_t ret; njs_object_t *object; @@ -533,8 +536,9 @@ memory_error: } -static u_char * -njs_json_parse_array(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) +static const u_char * +njs_json_parse_array(njs_json_parse_ctx_t *ctx, njs_value_t *value, + const u_char *p) { nxt_int_t ret; njs_array_t *array; @@ -621,14 +625,16 @@ error_end: } -static u_char * -njs_json_parse_string(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) +static const u_char * +njs_json_parse_string(njs_json_parse_ctx_t *ctx, njs_value_t *value, + const u_char *p) { - u_char *s, ch, *last, *start; - size_t size, surplus; - ssize_t length; - uint32_t utf, utf_low; - njs_ret_t ret; + u_char ch, *s, *dst; + size_t size, surplus; + ssize_t length; + uint32_t utf, utf_low; + njs_ret_t ret; + const u_char *start, *last; enum { sw_usual = 0, @@ -734,13 +740,13 @@ njs_json_parse_string(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) if (surplus != 0) { p = start; - start = nxt_mem_cache_alloc(ctx->pool, size); + dst = nxt_mem_cache_alloc(ctx->pool, size); if (nxt_slow_path(start == NULL)) { njs_memory_error(ctx->vm);; return NULL; } - s = start; + s = dst; do { ch = *p++; @@ -811,7 +817,8 @@ njs_json_parse_string(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) } while (p != last); - size = s - start; + size = s - dst; + start = dst; } length = nxt_utf8_length(start, size); @@ -819,7 +826,7 @@ njs_json_parse_string(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) length = 0; } - ret = njs_string_create(ctx->vm, value, start, size, length); + ret = njs_string_create(ctx->vm, value, (u_char *) start, size, length); if (nxt_slow_path(ret != NXT_OK)) { njs_memory_error(ctx->vm); return NULL; @@ -829,12 +836,13 @@ njs_json_parse_string(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) } -static u_char * -njs_json_parse_number(njs_json_parse_ctx_t *ctx, njs_value_t *value, u_char *p) +static const u_char * +njs_json_parse_number(njs_json_parse_ctx_t *ctx, njs_value_t *value, + const u_char *p) { - u_char *start; - double num; - nxt_int_t sign; + double num; + nxt_int_t sign; + const u_char *start; sign = 1; @@ -888,10 +896,10 @@ njs_json_unicode(const u_char *p) } -static u_char * -njs_json_skip_space(u_char *start, u_char *end) +static const u_char * +njs_json_skip_space(const u_char *start, const u_char *end) { - u_char *p; + const u_char *p; for (p = start; nxt_fast_path(p != end); p++) { @@ -1130,7 +1138,7 @@ njs_json_pop_parse_state(njs_json_parse_t *parse) static void njs_json_parse_exception(njs_json_parse_ctx_t *ctx, const char* msg, - u_char *pos) + const u_char *pos) { ssize_t length; diff --git a/njs/njs_lexer.c b/njs/njs_lexer.c index 3afe573c..e2cf369a 100644 --- a/njs/njs_lexer.c +++ b/njs/njs_lexer.c @@ -556,7 +556,8 @@ njs_lexer_number(njs_lexer_t *lexer) } lexer->start = p; - lexer->number = njs_number_hex_parse(&lexer->start, lexer->end); + lexer->number = njs_number_hex_parse((const u_char **) &lexer->start, + lexer->end); return NJS_TOKEN_NUMBER; } @@ -571,7 +572,8 @@ njs_lexer_number(njs_lexer_t *lexer) } lexer->start = p; - lexer->number = njs_number_oct_parse(&lexer->start, lexer->end); + lexer->number = njs_number_oct_parse((const u_char **) &lexer->start, + lexer->end); p = lexer->start; if (p < lexer->end && (*p == '8' || *p == '9')) { @@ -589,7 +591,8 @@ njs_lexer_number(njs_lexer_t *lexer) } lexer->start = p - 1; - lexer->number = njs_number_dec_parse(&lexer->start, lexer->end); + lexer->number = njs_number_dec_parse((const u_char **) &lexer->start, + lexer->end); return NJS_TOKEN_NUMBER; } diff --git a/njs/njs_number.c b/njs/njs_number.c index e75967fa..161c5097 100644 --- a/njs/njs_number.c +++ b/njs/njs_number.c @@ -39,7 +39,7 @@ static njs_ret_t njs_number_to_string_radix(njs_vm_t *vm, njs_value_t *string, uint32_t -njs_value_to_index(njs_value_t *value) +njs_value_to_index(const njs_value_t *value) { double num; njs_array_t *array; @@ -79,11 +79,12 @@ njs_value_to_index(njs_value_t *value) double -njs_number_dec_parse(u_char **start, u_char *end) +njs_number_dec_parse(const u_char **start, const u_char *end) { - u_char c, *e, *p; - double num, frac, scale, exponent; - nxt_bool_t minus; + u_char c; + double num, frac, scale, exponent; + nxt_bool_t minus; + const u_char *e, *p; p = *start; @@ -169,10 +170,11 @@ njs_number_dec_parse(u_char **start, u_char *end) uint64_t -njs_number_oct_parse(u_char **start, u_char *end) +njs_number_oct_parse(const u_char **start, const u_char *end) { - u_char c, *p; - uint64_t num; + u_char c; + uint64_t num; + const u_char *p; p = *start; @@ -197,10 +199,11 @@ njs_number_oct_parse(u_char **start, u_char *end) uint64_t -njs_number_hex_parse(u_char **start, u_char *end) +njs_number_hex_parse(const u_char **start, const u_char *end) { - u_char c, *p; - uint64_t num; + u_char c; + uint64_t num; + const u_char *p; p = *start; @@ -234,12 +237,12 @@ njs_number_hex_parse(u_char **start, u_char *end) int64_t -njs_number_radix_parse(u_char **start, u_char *end, uint8_t radix) +njs_number_radix_parse(const u_char **start, const u_char *end, uint8_t radix) { - u_char *p; - uint8_t d; - int64_t num; - uint64_t n; + uint8_t d; + int64_t num; + uint64_t n; + const u_char *p; static const int8_t digits[256] nxt_aligned(32) = @@ -780,11 +783,11 @@ njs_number_parse_int(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused) { double num; - u_char *p, *end; int64_t n; uint8_t radix; nxt_str_t string; nxt_bool_t minus, test_prefix; + const u_char *p, *end; num = NAN; diff --git a/njs/njs_number.h b/njs/njs_number.h index 33f59fa2..a1edda84 100644 --- a/njs/njs_number.h +++ b/njs/njs_number.h @@ -11,11 +11,12 @@ #include -uint32_t njs_value_to_index(njs_value_t *value); -double njs_number_dec_parse(u_char **start, u_char *end); -uint64_t njs_number_oct_parse(u_char **start, u_char *end); -uint64_t njs_number_hex_parse(u_char **start, u_char *end); -int64_t njs_number_radix_parse(u_char **start, u_char *end, uint8_t radix); +uint32_t njs_value_to_index(const njs_value_t *value); +double njs_number_dec_parse(const u_char **start, const u_char *end); +uint64_t njs_number_oct_parse(const u_char **start, const u_char *end); +uint64_t njs_number_hex_parse(const u_char **start, const u_char *end); +int64_t njs_number_radix_parse(const u_char **start, const u_char *end, + uint8_t radix); njs_ret_t njs_number_to_string(njs_vm_t *vm, njs_value_t *string, const njs_value_t *number); size_t njs_num_to_buf(double num, u_char *buf, size_t size); diff --git a/njs/njs_parser.c b/njs/njs_parser.c index 99d1ccb8..c4c5601c 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -2379,9 +2379,10 @@ static njs_token_t njs_parser_escape_string_create(njs_vm_t *vm, njs_parser_t *parser, njs_value_t *value) { - u_char c, *p, *start, *dst, *src, *end, *hex_end; - size_t size, length, hex_length; - uint64_t u; + u_char c, *start, *dst; + size_t size,length, hex_length; + uint64_t u; + const u_char *p, *src, *end, *hex_end; start = NULL; dst = NULL; diff --git a/njs/njs_string.c b/njs/njs_string.c index ec8f9ab7..68c433d3 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -3183,12 +3183,12 @@ njs_primitive_value_to_string(njs_vm_t *vm, njs_value_t *dst, double -njs_string_to_number(njs_value_t *value, nxt_bool_t parse_float) +njs_string_to_number(const njs_value_t *value, nxt_bool_t parse_float) { - u_char *p, *start, *end; - double num; - size_t size; - nxt_bool_t minus; + double num; + size_t size; + nxt_bool_t minus; + const u_char *p, *start, *end; const size_t infinity = sizeof("Infinity") - 1; @@ -3265,11 +3265,11 @@ njs_string_to_number(njs_value_t *value, nxt_bool_t parse_float) double -njs_string_to_index(njs_value_t *value) +njs_string_to_index(const njs_value_t *value) { - u_char *p, *end; - double num; - size_t size; + double num; + size_t size; + const u_char *p, *end; size = value->short_string.size; @@ -3305,7 +3305,7 @@ njs_string_to_index(njs_value_t *value) * is returned as is, otherwise the new copy is allocated with * the terminating zero byte. */ -u_char * +const u_char * njs_string_to_c_string(njs_vm_t *vm, njs_value_t *value) { u_char *p, *data, *start; diff --git a/njs/njs_string.h b/njs/njs_string.h index caf8dd39..afa56348 100644 --- a/njs/njs_string.h +++ b/njs/njs_string.h @@ -147,9 +147,9 @@ nxt_noinline uint32_t njs_string_index(njs_string_prop_t *string, void njs_string_offset_map_init(const u_char *start, size_t size); njs_ret_t njs_primitive_value_to_string(njs_vm_t *vm, njs_value_t *dst, const njs_value_t *src); -double njs_string_to_index(njs_value_t *value); -double njs_string_to_number(njs_value_t *value, nxt_bool_t parse_float); -u_char *njs_string_to_c_string(njs_vm_t *vm, njs_value_t *value); +double njs_string_to_index(const njs_value_t *value); +double njs_string_to_number(const njs_value_t *value, nxt_bool_t parse_float); +const u_char *njs_string_to_c_string(njs_vm_t *vm, njs_value_t *value); njs_ret_t njs_string_encode_uri(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused); njs_ret_t njs_string_encode_uri_component(njs_vm_t *vm, njs_value_t *args, -- 2.47.3