]> git.kaiwu.me - njs.git/commitdiff
Added njs_string_slice_string_prop().
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 19 Oct 2018 17:55:33 +0000 (20:55 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Fri, 19 Oct 2018 17:55:33 +0000 (20:55 +0300)
njs/njs_string.c
njs/njs_string.h

index ef8abbe9dec7b08635ea90cdb029a4a4edd8577b..b1feb4688b48c5ba32fbf4749d7c326d1646a429 100644 (file)
@@ -1287,8 +1287,8 @@ njs_string_slice_args(njs_slice_prop_t *slice, njs_value_t *args,
 }
 
 
-nxt_noinline njs_ret_t
-njs_string_slice(njs_vm_t *vm, njs_value_t *dst,
+nxt_noinline void
+njs_string_slice_string_prop(njs_string_prop_t *dst,
     const njs_string_prop_t *string, const njs_slice_prop_t *slice)
 {
     size_t        size, n, length;
@@ -1325,8 +1325,22 @@ njs_string_slice(njs_vm_t *vm, njs_value_t *dst,
         length -= n;
     }
 
-    if (nxt_fast_path(size != 0)) {
-        return njs_string_new(vm, dst, start, size, length);
+    dst->start = (u_char *) start;
+    dst->length = length;
+    dst->size = size;
+}
+
+
+nxt_noinline njs_ret_t
+njs_string_slice(njs_vm_t *vm, njs_value_t *dst,
+    const njs_string_prop_t *string, const njs_slice_prop_t *slice)
+{
+    njs_string_prop_t  prop;
+
+    njs_string_slice_string_prop(&prop, string, slice);
+
+    if (nxt_fast_path(prop.size != 0)) {
+        return njs_string_new(vm, dst, prop.start, prop.size, prop.length);
     }
 
     *dst = njs_string_empty;
index e2042d041e8d5714fbc37870a7a55d0c4b0948ad..684566402ffbb254ebce1d07c0d9a9b774338981 100644 (file)
@@ -145,6 +145,8 @@ njs_ret_t njs_string_constructor(njs_vm_t *vm, njs_value_t *args,
     nxt_uint_t nargs, njs_index_t unused);
 nxt_bool_t njs_string_eq(const njs_value_t *val1, const njs_value_t *val2);
 nxt_int_t njs_string_cmp(const njs_value_t *val1, const njs_value_t *val2);
+nxt_noinline void njs_string_slice_string_prop(njs_string_prop_t *dst,
+    const njs_string_prop_t *string, const njs_slice_prop_t *slice);
 njs_ret_t njs_string_slice(njs_vm_t *vm, njs_value_t *dst,
     const njs_string_prop_t *string, const njs_slice_prop_t *slice);
 const u_char *njs_string_offset(const u_char *start, const u_char *end,