details: https://hg.nginx.org/njs/rev/e4f3b3b97990 branches: changeset: 905:e4f3b3b97990 user: Alexander Borisov <alexander.bori...@nginx.com> date: Wed Apr 17 17:13:39 2019 +0300 description: Added function to get length of the string.
Renamed function njs_string_length() to njs_string_eval_length(). diffstat: njs/njs_regexp.c | 2 +- njs/njs_string.c | 8 ++++---- njs/njs_string.h | 20 +++++++++++++++++++- 3 files changed, 24 insertions(+), 6 deletions(-) diffs (88 lines): diff -r 91a74d5ffc5d -r e4f3b3b97990 njs/njs_regexp.c --- a/njs/njs_regexp.c Mon Apr 08 19:01:56 2019 +0300 +++ b/njs/njs_regexp.c Wed Apr 17 17:13:39 2019 +0300 @@ -797,7 +797,7 @@ njs_regexp_exec_result(njs_vm_t *vm, njs start = &string[captures[n]]; size = captures[n + 1] - captures[n]; - length = njs_string_length(utf8, start, size); + length = njs_string_calc_length(utf8, start, size); ret = njs_regexp_string_create(vm, &array->start[i], start, size, length); diff -r 91a74d5ffc5d -r e4f3b3b97990 njs/njs_string.c --- a/njs/njs_string.c Mon Apr 08 19:01:56 2019 +0300 +++ b/njs/njs_string.c Wed Apr 17 17:13:39 2019 +0300 @@ -2691,7 +2691,7 @@ njs_string_match_multiple(njs_vm_t *vm, size = captures[1] - captures[0]; - length = njs_string_length(utf8, start, size); + length = njs_string_calc_length(utf8, start, size); ret = njs_string_new(vm, &array->start[array->length], start, size, length); @@ -2890,7 +2890,7 @@ njs_string_split_part_add(njs_vm_t *vm, { ssize_t length; - length = njs_string_length(utf8, start, size); + length = njs_string_calc_length(utf8, start, size); return njs_array_string_add(vm, array, start, size, length); } @@ -3133,7 +3133,7 @@ njs_string_replace_regexp_function(njs_v size = captures[k + 1] - captures[k]; k += 2; - length = njs_string_length(r->utf8, start, size); + length = njs_string_calc_length(r->utf8, start, size); ret = njs_string_new(vm, &arguments[i], start, size, length); if (nxt_slow_path(ret != NXT_OK)) { @@ -3145,7 +3145,7 @@ njs_string_replace_regexp_function(njs_v njs_value_number_set(&arguments[n + 1], captures[0]); /* The whole string being examined. */ - length = njs_string_length(r->utf8, r->part[0].start, r->part[0].size); + length = njs_string_calc_length(r->utf8, r->part[0].start, r->part[0].size); ret = njs_string_new(vm, &arguments[n + 2], r->part[0].start, r->part[0].size, length); diff -r 91a74d5ffc5d -r e4f3b3b97990 njs/njs_string.h --- a/njs/njs_string.h Mon Apr 08 19:01:56 2019 +0300 +++ b/njs/njs_string.h Wed Apr 17 17:13:39 2019 +0300 @@ -100,7 +100,7 @@ typedef enum { nxt_inline uint32_t -njs_string_length(njs_utf8_t utf8, const u_char *start, size_t size) +njs_string_calc_length(njs_utf8_t utf8, const u_char *start, size_t size) { ssize_t length; @@ -121,6 +121,24 @@ njs_string_length(njs_utf8_t utf8, const } +nxt_inline uint32_t +njs_string_length(njs_value_t *string) +{ + uint32_t length, size; + + if (string->short_string.size != NJS_STRING_LONG) { + size = string->short_string.size; + length = string->short_string.length; + + } else { + size = string->long_string.size; + length = string->long_string.data->length; + } + + return (length == 0) ? size : length; +} + + njs_ret_t njs_string_set(njs_vm_t *vm, njs_value_t *value, const u_char *start, uint32_t size); u_char *njs_string_alloc(njs_vm_t *vm, njs_value_t *value, uint32_t size, _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel