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);
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);
{
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);
}
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)) {
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);
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;
}
+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,