From 1aab24099e80d23ca86fde9d4d76a552ad83a294 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Fri, 19 Oct 2018 20:55:33 +0300 Subject: [PATCH] Added njs_string_slice_string_prop(). --- njs/njs_string.c | 22 ++++++++++++++++++---- njs/njs_string.h | 2 ++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/njs/njs_string.c b/njs/njs_string.c index ef8abbe9..b1feb468 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -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; diff --git a/njs/njs_string.h b/njs/njs_string.h index e2042d04..68456640 100644 --- a/njs/njs_string.h +++ b/njs/njs_string.h @@ -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, -- 2.47.3