Welcome! Log In Create A New Profile

Advanced

[njs] Added function to get length of the string.

Alexander Borisov
April 18, 2019 12:12PM
details: https://hg.nginx.org/njs/rev/e4f3b3b97990
branches:
changeset: 905:e4f3b3b97990
user: Alexander Borisov <alexander.borisov@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
Subject Author Views Posted

[njs] Added function to get length of the string.

Alexander Borisov 293 April 18, 2019 12:12PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 174
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready