]> git.kaiwu.me - njs.git/commitdiff
Added function to get length of the string.
authorAlexander Borisov <alexander.borisov@nginx.com>
Wed, 17 Apr 2019 14:13:39 +0000 (17:13 +0300)
committerAlexander Borisov <alexander.borisov@nginx.com>
Wed, 17 Apr 2019 14:13:39 +0000 (17:13 +0300)
Renamed function njs_string_length() to njs_string_eval_length().

njs/njs_regexp.c
njs/njs_string.c
njs/njs_string.h

index 3a9c11c8c92a1efa177ca80d4c74bb79de72fe61..03d79a73e7129ef87bb649fa07990fe56b674f9c 100644 (file)
@@ -797,7 +797,7 @@ njs_regexp_exec_result(njs_vm_t *vm, njs_regexp_t *regexp, njs_utf8_t utf8,
             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);
index 579d6afb23c6a49f46f98af542dc89a12db2c290..a4d844aa940835f6b834bd71508cb6d7831c04b5 100644 (file)
@@ -2691,7 +2691,7 @@ njs_string_match_multiple(njs_vm_t *vm, njs_value_t *args,
 
                 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, njs_array_t *array, njs_utf8_t utf8,
 {
     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_vm_t *vm, njs_value_t *args,
         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_vm_t *vm, njs_value_t *args,
     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);
index d70a7dc0a963e2234193db2602db1818f82e2336..734c274b62d6a35a75823b69fa5347167dc91ebe 100644 (file)
@@ -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 u_char *start, size_t size)
 }
 
 
+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,