u_char *source, int options);
static njs_ret_t njs_regexp_exec_result(njs_vm_t *vm, njs_regexp_t *regexp,
u_char *string, int *captures, nxt_uint_t utf8);
+static njs_ret_t njs_regexp_string_create(njs_vm_t *vm, njs_value_t *value,
+ u_char *start, uint32_t size, int32_t length);
njs_ret_t
size = strlen((char *) source) - pattern->flags;
length = nxt_utf8_length(source, size);
- return njs_string_create(vm, &vm->retval, source, size, length);
+ return njs_regexp_string_create(vm, &vm->retval, source, size, length);
}
size = strlen((char *) source);
length = nxt_utf8_length(source, size);
- return njs_string_create(vm, &vm->retval, source, size, length);
+ return njs_regexp_string_create(vm, &vm->retval, source, size, length);
}
break;
}
- ret = njs_string_create(vm, &array->start[i], start, size, length);
+ ret = njs_regexp_string_create(vm, &array->start[i],
+ start, size, length);
if (nxt_slow_path(ret != NXT_OK)) {
return NXT_ERROR;
}
}
+static njs_ret_t
+njs_regexp_string_create(njs_vm_t *vm, njs_value_t *value, u_char *start,
+ uint32_t size, int32_t length)
+{
+ if (nxt_fast_path(length >= 0)) {
+ return njs_string_create(vm, value, start, size, length);
+ }
+
+ vm->exception = &njs_exception_internal_error;
+ return NXT_ERROR;
+}
+
+
static const njs_object_prop_t njs_regexp_constructor_properties[] =
{
/* RegExp.name == "RegExp". */