From 667fedae5920edf1908c91ce8bb8f20c1314ddae Mon Sep 17 00:00:00 2001 From: hongzhidao Date: Tue, 2 Jul 2019 22:18:56 -0400 Subject: [PATCH] Splitting njs_vm_value_to_ext_string(). Into njs_vm_value_to_string() and njs_vm_backtrace_dump(). --- nginx/ngx_http_js_module.c | 18 +-- nginx/ngx_stream_js_module.c | 22 ++-- njs/njs.c | 163 +++++++++++++++++++++++- njs/njs.h | 16 ++- njs/njs_json.c | 2 +- njs/njs_object_property.c | 2 +- njs/njs_vm.c | 211 ++++++-------------------------- njs/test/njs_benchmark.c | 4 +- njs/test/njs_interactive_test.c | 6 +- njs/test/njs_unit_test.c | 22 ++-- 10 files changed, 248 insertions(+), 218 deletions(-) diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 787098a0..15493ecc 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -561,7 +561,7 @@ ngx_http_js_content_event_handler(ngx_http_request_t *r) ctx->status = NGX_HTTP_INTERNAL_SERVER_ERROR; if (njs_vm_call(ctx->vm, func, njs_value_arg(&ctx->request), 1) != NJS_OK) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -693,7 +693,7 @@ ngx_http_js_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, pending = njs_vm_pending(ctx->vm); if (njs_vm_call(ctx->vm, func, njs_value_arg(&ctx->request), 1) != NJS_OK) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -702,7 +702,7 @@ ngx_http_js_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, return NGX_OK; } - if (njs_vm_retval_to_ext_string(ctx->vm, &value) != NJS_OK) { + if (njs_vm_retval_string(ctx->vm, &value) != NJS_OK) { return NGX_ERROR; } @@ -767,7 +767,7 @@ ngx_http_js_init_vm(ngx_http_request_t *r) cln->data = ctx; if (njs_vm_start(ctx->vm) == NJS_ERROR) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -1371,7 +1371,7 @@ ngx_http_js_ext_log_core(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, c = r->connection; - if (njs_vm_value_to_ext_string(vm, &msg, njs_arg(args, nargs, 1), 0) + if (njs_vm_value_to_string(vm, &msg, njs_arg(args, nargs, 1)) == NJS_ERROR) { return NJS_ERROR; @@ -1797,7 +1797,7 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, arg = njs_arg(args, nargs, 2); if (njs_value_is_string(arg)) { - if (njs_vm_value_to_ext_string(vm, &args_arg, arg, 0) != NJS_OK) { + if (njs_vm_value_to_string(vm, &args_arg, arg) != NJS_OK) { njs_vm_error(vm, "failed to convert args"); return NJS_ERROR; } @@ -2172,7 +2172,7 @@ ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event, rc = njs_vm_run(ctx->vm); if (rc == NJS_ERROR) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -2190,7 +2190,7 @@ static njs_ret_t ngx_http_js_string(njs_vm_t *vm, const njs_value_t *value, nxt_str_t *str) { if (!njs_value_is_null_or_undefined(value)) { - if (njs_vm_value_to_ext_string(vm, str, value, 0) == NJS_ERROR) { + if (njs_vm_value_to_string(vm, str, value) == NJS_ERROR) { return NJS_ERROR; } @@ -2342,7 +2342,7 @@ ngx_http_js_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) rc = njs_vm_compile(jmcf->vm, &start, end); if (rc != NJS_OK) { - njs_vm_retval_to_ext_string(jmcf->vm, &text); + njs_vm_retval_string(jmcf->vm, &text); ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%*s, included", diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c index 5471f6bd..01c59440 100644 --- a/nginx/ngx_stream_js_module.c +++ b/nginx/ngx_stream_js_module.c @@ -489,7 +489,7 @@ ngx_stream_js_phase_handler(ngx_stream_session_t *s, ngx_str_t *name) exception: - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, c->log, 0, "js exception: %*s", exception.length, exception.start); @@ -615,7 +615,7 @@ ngx_stream_js_body_filter(ngx_stream_session_t *s, ngx_chain_t *in, exception: - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, c->log, 0, "js exception: %*s", exception.length, exception.start); @@ -666,7 +666,7 @@ ngx_stream_js_variable(ngx_stream_session_t *s, ngx_stream_variable_value_t *v, pending = njs_vm_pending(ctx->vm); if (njs_vm_call(ctx->vm, func, njs_value_arg(&ctx->args), 1) != NJS_OK) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -675,7 +675,7 @@ ngx_stream_js_variable(ngx_stream_session_t *s, ngx_stream_variable_value_t *v, return NGX_OK; } - if (njs_vm_retval_to_ext_string(ctx->vm, &value) != NJS_OK) { + if (njs_vm_retval_string(ctx->vm, &value) != NJS_OK) { return NGX_ERROR; } @@ -740,7 +740,7 @@ ngx_stream_js_init_vm(ngx_stream_session_t *s) cln->data = ctx; if (njs_vm_start(ctx->vm) == NJS_ERROR) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -1016,7 +1016,7 @@ ngx_stream_js_ext_log_core(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, c = s->connection; - if (njs_vm_value_to_ext_string(vm, &msg, njs_arg(args, nargs, 1), 0) + if (njs_vm_value_to_string(vm, &msg, njs_arg(args, nargs, 1)) == NJS_ERROR) { return NJS_ERROR; @@ -1047,7 +1047,7 @@ ngx_stream_js_ext_on(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, return NJS_ERROR; } - if (njs_vm_value_to_ext_string(vm, &name, njs_arg(args, nargs, 1), 0) + if (njs_vm_value_to_string(vm, &name, njs_arg(args, nargs, 1)) == NJS_ERROR) { njs_vm_error(vm, "failed to convert event arg"); @@ -1093,7 +1093,7 @@ ngx_stream_js_ext_off(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, return NJS_ERROR; } - if (njs_vm_value_to_ext_string(vm, &name, njs_arg(args, nargs, 1), 0) + if (njs_vm_value_to_string(vm, &name, njs_arg(args, nargs, 1)) == NJS_ERROR) { njs_vm_error(vm, "failed to convert event arg"); @@ -1362,7 +1362,7 @@ ngx_stream_js_handle_event(ngx_stream_session_t *s, njs_vm_event_t vm_event, rc = njs_vm_run(ctx->vm); if (rc == NJS_ERROR) { - njs_vm_retval_to_ext_string(ctx->vm, &exception); + njs_vm_retval_string(ctx->vm, &exception); ngx_log_error(NGX_LOG_ERR, s->connection->log, 0, "js exception: %*s", exception.length, exception.start); @@ -1380,7 +1380,7 @@ static njs_ret_t ngx_stream_js_string(njs_vm_t *vm, const njs_value_t *value, nxt_str_t *str) { if (!njs_value_is_null_or_undefined(value)) { - if (njs_vm_value_to_ext_string(vm, str, value, 0) == NJS_ERROR) { + if (njs_vm_value_to_string(vm, str, value) == NJS_ERROR) { return NJS_ERROR; } @@ -1533,7 +1533,7 @@ ngx_stream_js_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) rc = njs_vm_compile(jmcf->vm, &start, end); if (rc != NJS_OK) { - njs_vm_retval_to_ext_string(jmcf->vm, &text); + njs_vm_retval_string(jmcf->vm, &text); ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%*s, included", diff --git a/njs/njs.c b/njs/njs.c index 9ee74554..12fa2448 100644 --- a/njs/njs.c +++ b/njs/njs.c @@ -838,8 +838,167 @@ njs_vm_memory_error(njs_vm_t *vm) } +nxt_array_t * +njs_vm_backtrace(njs_vm_t *vm) +{ + if (vm->backtrace != NULL && !nxt_array_is_empty(vm->backtrace)) { + return vm->backtrace; + } + + return NULL; +} + + +static njs_ret_t +njs_vm_backtrace_dump(njs_vm_t *vm, nxt_str_t *dst, const njs_value_t *src) +{ + u_char *p, *start, *end; + size_t len, count; + nxt_uint_t i; + nxt_array_t *backtrace; + njs_backtrace_entry_t *be, *prev; + + backtrace = njs_vm_backtrace(vm); + + len = dst->length + 1; + + count = 0; + prev = NULL; + + be = backtrace->start; + + for (i = 0; i < backtrace->items; i++) { + if (i != 0 && prev->name.start == be->name.start + && prev->line == be->line) + { + count++; + + } else { + + if (count != 0) { + len += nxt_length(" repeats times\n") + + NXT_INT_T_LEN; + count = 0; + } + + len += be->name.length + nxt_length(" at ()\n"); + + if (be->line != 0) { + len += be->file.length + NXT_INT_T_LEN + 1; + + } else { + len += nxt_length("native"); + } + } + + prev = be; + be++; + } + + p = nxt_mp_alloc(vm->mem_pool, len); + if (p == NULL) { + njs_memory_error(vm); + return NXT_ERROR; + } + + start = p; + end = start + len; + + p = nxt_cpymem(p, dst->start, dst->length); + *p++ = '\n'; + + count = 0; + prev = NULL; + + be = backtrace->start; + + for (i = 0; i < backtrace->items; i++) { + if (i != 0 && prev->name.start == be->name.start + && prev->line == be->line) + { + count++; + + } else { + if (count != 0) { + p = nxt_sprintf(p, end, " repeats %uz times\n", + count); + count = 0; + } + + p = nxt_sprintf(p, end, " at %V ", &be->name); + + if (be->line != 0) { + p = nxt_sprintf(p, end, "(%V:%uD)\n", &be->file, + be->line); + + } else { + p = nxt_sprintf(p, end, "(native)\n"); + } + } + + prev = be; + be++; + } + + dst->start = start; + dst->length = p - dst->start; + + return NXT_OK; +} + + +njs_ret_t +njs_vm_value_string(njs_vm_t *vm, nxt_str_t *dst, const njs_value_t *src) +{ + njs_ret_t ret; + nxt_uint_t exception; + + if (nxt_slow_path(src->type == NJS_NUMBER + && njs_number(src) == 0 + && signbit(njs_number(src)))) + { + njs_string_get(&njs_string_minus_zero, dst); + return NXT_OK; + } + + exception = 1; + +again: + + ret = njs_vm_value_to_string(vm, dst, src); + + if (nxt_fast_path(ret == NXT_OK)) { + + if (njs_vm_backtrace(vm) != NULL) { + ret = njs_vm_backtrace_dump(vm, dst, src); + if (nxt_slow_path(ret != NXT_OK)) { + return NXT_ERROR; + } + } + + return NXT_OK; + } + + if (exception) { + exception = 0; + + /* value evaluation threw an exception. */ + + vm->top_frame->trap_tries = 0; + + src = &vm->retval; + goto again; + } + + dst->length = 0; + dst->start = NULL; + + return NXT_ERROR; +} + + njs_ret_t -njs_vm_retval_to_ext_string(njs_vm_t *vm, nxt_str_t *dst) +njs_vm_retval_string(njs_vm_t *vm, nxt_str_t *dst) { if (vm->top_frame == NULL) { /* An exception was thrown during compilation. */ @@ -847,7 +1006,7 @@ njs_vm_retval_to_ext_string(njs_vm_t *vm, nxt_str_t *dst) njs_vm_init(vm); } - return njs_vm_value_to_ext_string(vm, dst, &vm->retval, 1); + return njs_vm_value_string(vm, dst, &vm->retval); } diff --git a/njs/njs.h b/njs/njs.h index bb43a511..e4dbc5d5 100644 --- a/njs/njs.h +++ b/njs/njs.h @@ -249,9 +249,19 @@ NXT_EXPORT u_char *njs_vm_value_string_alloc(njs_vm_t *vm, njs_value_t *value, uint32_t size); NXT_EXPORT nxt_int_t njs_vm_value_string_copy(njs_vm_t *vm, nxt_str_t *retval, const njs_value_t *value, uintptr_t *next); -NXT_EXPORT njs_ret_t njs_vm_value_to_ext_string(njs_vm_t *vm, nxt_str_t *dst, - const njs_value_t *src, nxt_uint_t handle_exception); -NXT_EXPORT njs_ret_t njs_vm_retval_to_ext_string(njs_vm_t *vm, nxt_str_t *dst); + +/* + * Converts a value to string. + */ +NXT_EXPORT njs_ret_t njs_vm_value_to_string(njs_vm_t *vm, nxt_str_t *dst, + const njs_value_t *src); + +/* + * Calls njs_vm_value_to_string(), if exception was thrown adds backtrace. + */ +NXT_EXPORT njs_ret_t njs_vm_value_string(njs_vm_t *vm, nxt_str_t *dst, + const njs_value_t *src); +NXT_EXPORT njs_ret_t njs_vm_retval_string(njs_vm_t *vm, nxt_str_t *dst); NXT_EXPORT njs_ret_t njs_vm_value_dump(njs_vm_t *vm, nxt_str_t *dst, const njs_value_t *value, nxt_uint_t console, nxt_uint_t indent); diff --git a/njs/njs_json.c b/njs/njs_json.c index 89b0a9c9..7de376ff 100644 --- a/njs/njs_json.c +++ b/njs/njs_json.c @@ -2566,7 +2566,7 @@ memory_error: exception: - njs_vm_value_to_ext_string(vm, retval, &vm->retval, 1); + njs_vm_value_string(vm, retval, &vm->retval); return NXT_OK; } diff --git a/njs/njs_object_property.c b/njs/njs_object_property.c index a307f3b3..1fd1b16b 100644 --- a/njs/njs_object_property.c +++ b/njs/njs_object_property.c @@ -437,7 +437,7 @@ njs_external_property_set(njs_vm_t *vm, njs_value_t *value, njs_value_t *setval, pq = (njs_property_query_t *) vm->stash; if (!njs_is_null_or_undefined(setval)) { - ret = njs_vm_value_to_ext_string(vm, &s, setval, 0); + ret = njs_vm_value_to_string(vm, &s, setval); if (nxt_slow_path(ret != NXT_OK)) { return ret; } diff --git a/njs/njs_vm.c b/njs/njs_vm.c index 3bab70a3..e64d8676 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -3086,184 +3086,58 @@ njs_value_own_enumerate(njs_vm_t *vm, const njs_value_t *value, njs_ret_t -njs_vm_value_to_ext_string(njs_vm_t *vm, nxt_str_t *dst, const njs_value_t *src, - nxt_uint_t handle_exception) +njs_vm_value_to_string(njs_vm_t *vm, nxt_str_t *dst, const njs_value_t *src) { - u_char *p, *start, *end; - size_t len, size, count; - njs_ret_t ret; - nxt_uint_t i, exception; - nxt_array_t *backtrace; - njs_value_t value; - njs_backtrace_entry_t *be, *prev; - - exception = handle_exception; - -again: - - if (nxt_fast_path(src != NULL)) { - - if (nxt_slow_path(src->type == NJS_OBJECT_INTERNAL_ERROR)) { - - /* MemoryError is a nonextensible internal error. */ - - if (!src->data.u.object->extensible) { - njs_string_get(&njs_string_memory_error, dst); - return NXT_OK; - } - } - - value = *src; - - if (nxt_slow_path(!njs_is_primitive(&value))) { + u_char *start; + size_t size; + njs_ret_t ret; + njs_value_t value; - ret = njs_object_value_to_string(vm, &value); + if (nxt_slow_path(src == NULL)) { + return NXT_ERROR; + } - if (nxt_slow_path(ret != NXT_OK)) { - goto fail; - } + if (nxt_slow_path(src->type == NJS_OBJECT_INTERNAL_ERROR)) { + /* MemoryError is a nonextensible internal error. */ + if (!src->data.u.object->extensible) { + njs_string_get(&njs_string_memory_error, dst); + return NXT_OK; } + } - if (nxt_slow_path((value.type == NJS_NUMBER - && value.data.u.number == 0 - && signbit(value.data.u.number)))) - { - value = njs_string_minus_zero; - ret = NXT_OK; + value = *src; - } else { - ret = njs_primitive_value_to_string(vm, &value, &value); + if (nxt_slow_path(!njs_is_primitive(&value))) { + ret = njs_object_value_to_string(vm, &value); + if (nxt_slow_path(ret != NXT_OK)) { + return ret; } + } - if (nxt_fast_path(ret == NXT_OK)) { - size = value.short_string.size; - - if (size != NJS_STRING_LONG) { - start = nxt_mp_alloc(vm->mem_pool, size); - if (nxt_slow_path(start == NULL)) { - njs_memory_error(vm); - return NXT_ERROR; - } + ret = njs_primitive_value_to_string(vm, &value, &value); - memcpy(start, value.short_string.start, size); + if (nxt_fast_path(ret == NXT_OK)) { + size = value.short_string.size; - } else { - size = value.long_string.size; - start = value.long_string.data->start; + if (size != NJS_STRING_LONG) { + start = nxt_mp_alloc(vm->mem_pool, size); + if (nxt_slow_path(start == NULL)) { + njs_memory_error(vm); + return NXT_ERROR; } - dst->length = size; - dst->start = start; - - if (exception && njs_vm_backtrace(vm) != NULL) { - - backtrace = njs_vm_backtrace(vm); - - len = dst->length + 1; - - count = 0; - prev = NULL; - - be = backtrace->start; - - for (i = 0; i < backtrace->items; i++) { - if (i != 0 && prev->name.start == be->name.start - && prev->line == be->line) - { - count++; - - } else { - - if (count != 0) { - len += nxt_length(" repeats times\n") - + NXT_INT_T_LEN; - count = 0; - } - - len += be->name.length + nxt_length(" at ()\n"); - - if (be->line != 0) { - len += be->file.length + NXT_INT_T_LEN + 1; + memcpy(start, value.short_string.start, size); - } else { - len += nxt_length("native"); - } - } - - prev = be; - be++; - } - - p = nxt_mp_alloc(vm->mem_pool, len); - if (p == NULL) { - njs_memory_error(vm); - return NXT_ERROR; - } - - start = p; - end = start + len; - - p = nxt_cpymem(p, dst->start, dst->length); - *p++ = '\n'; - - count = 0; - prev = NULL; - - be = backtrace->start; - - for (i = 0; i < backtrace->items; i++) { - if (i != 0 && prev->name.start == be->name.start - && prev->line == be->line) - { - count++; - - } else { - if (count != 0) { - p = nxt_sprintf(p, end, " repeats %uz times\n", - count); - count = 0; - } - - p = nxt_sprintf(p, end, " at %V ", &be->name); - - if (be->line != 0) { - p = nxt_sprintf(p, end, "(%V:%uD)\n", &be->file, - be->line); - - } else { - p = nxt_sprintf(p, end, "(native)\n"); - } - } - - prev = be; - be++; - } - - dst->start = start; - dst->length = p - dst->start; - } - - return NXT_OK; + } else { + size = value.long_string.size; + start = value.long_string.data->start; } - } - -fail: - - if (handle_exception) { - handle_exception = 0; - - /* value evaluation threw an exception. */ - vm->top_frame->trap_tries = 0; - - src = &vm->retval; - goto again; + dst->length = size; + dst->start = start; } - dst->length = 0; - dst->start = NULL; - - return NXT_ERROR; + return ret; } @@ -3299,7 +3173,7 @@ njs_object_value_to_string(njs_vm_t *vm, njs_value_t *value) /* * Prevent njs_vmcode_interpreter() to unwind the current frame if * an exception happens. It preserves the current frame state if - * njs_vm_value_to_ext_string() is called from within njs_vm_run(). + * njs_vm_value_string() is called from within njs_vm_run(). */ previous = vm->top_frame->previous; vm->top_frame->previous = NULL; @@ -3371,7 +3245,7 @@ njs_vm_value_string_copy(njs_vm_t *vm, nxt_str_t *retval, return NXT_ERROR; } - return njs_vm_value_to_ext_string(vm, retval, value, 0); + return njs_vm_value_to_string(vm, retval, value); } @@ -3443,17 +3317,6 @@ njs_vm_add_backtrace_entry(njs_vm_t *vm, njs_frame_t *frame) } -nxt_array_t * -njs_vm_backtrace(njs_vm_t *vm) -{ - if (vm->backtrace != NULL && !nxt_array_is_empty(vm->backtrace)) { - return vm->backtrace; - } - - return NULL; -} - - void njs_debug(njs_index_t index, njs_value_t *value) { diff --git a/njs/test/njs_benchmark.c b/njs/test/njs_benchmark.c index f15106a4..649a08f4 100644 --- a/njs/test/njs_benchmark.c +++ b/njs/test/njs_benchmark.c @@ -56,8 +56,8 @@ njs_unit_test_benchmark(nxt_str_t *script, nxt_str_t *result, const char *msg, (void) njs_vm_start(nvm); - if (njs_vm_retval_to_ext_string(nvm, &s) != NXT_OK) { - nxt_printf("njs_vm_retval_to_ext_string() failed\n"); + if (njs_vm_retval_string(nvm, &s) != NXT_OK) { + nxt_printf("njs_vm_retval_string() failed\n"); goto done; } diff --git a/njs/test/njs_interactive_test.c b/njs/test/njs_interactive_test.c index 192b81cc..d18aa215 100644 --- a/njs/test/njs_interactive_test.c +++ b/njs/test/njs_interactive_test.c @@ -226,7 +226,7 @@ static njs_interactive_test_t njs_test[] = " repeats 2 times\n" " at main (native)\n") }, - /* Exception in njs_vm_retval_to_ext_string() */ + /* Exception in njs_vm_retval_string() */ { nxt_string("var o = { toString: function() { return [1] } }" ENTER "o" ENTER), @@ -305,8 +305,8 @@ njs_interactive_test(nxt_bool_t verbose) } } - if (njs_vm_retval_to_ext_string(vm, &s) != NXT_OK) { - nxt_printf("njs_vm_retval_to_ext_string() failed\n"); + if (njs_vm_retval_string(vm, &s) != NXT_OK) { + nxt_printf("njs_vm_retval_string() failed\n"); goto done; } diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index b3607d48..80943397 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -13427,7 +13427,7 @@ njs_unit_test_method_external(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, return NJS_ERROR; } - ret = njs_vm_value_to_ext_string(vm, &s, njs_arg(args, nargs, 1), 0); + ret = njs_vm_value_to_string(vm, &s, njs_arg(args, nargs, 1)); if (ret == NXT_OK && s.length == 3 && memcmp(s.start, "YES", 3) == 0) { return njs_vm_value_string_set(vm, njs_vm_retval(vm), r->uri.start, r->uri.length); @@ -13453,9 +13453,7 @@ njs_unit_test_create_external(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, return NJS_ERROR; } - if (njs_vm_value_to_ext_string(vm, &uri, njs_arg(args, nargs, 1), 0) - != NJS_OK) - { + if (njs_vm_value_to_string(vm, &uri, njs_arg(args, nargs, 1)) != NJS_OK) { return NJS_ERROR; } @@ -13799,14 +13797,14 @@ njs_unit_test(njs_unit_test_t tests[], size_t num, nxt_bool_t module, ret = njs_vm_start(nvm); - if (njs_vm_retval_to_ext_string(nvm, &s) != NXT_OK) { - nxt_printf("njs_vm_retval_to_ext_string() failed\n"); + if (njs_vm_retval_string(nvm, &s) != NXT_OK) { + nxt_printf("njs_vm_retval_string() failed\n"); goto done; } } else { - if (njs_vm_retval_to_ext_string(vm, &s) != NXT_OK) { - nxt_printf("njs_vm_retval_to_ext_string() failed\n"); + if (njs_vm_retval_string(vm, &s) != NXT_OK) { + nxt_printf("njs_vm_retval_string() failed\n"); goto done; } } @@ -14015,8 +14013,8 @@ njs_vm_json_test(nxt_bool_t disassemble, nxt_bool_t verbose) goto done; } - if (njs_vm_retval_to_ext_string(vm, &s) != NXT_OK) { - nxt_printf("njs_vm_retval_to_ext_string() failed\n"); + if (njs_vm_retval_string(vm, &s) != NXT_OK) { + nxt_printf("njs_vm_retval_string() failed\n"); goto done; } @@ -14042,8 +14040,8 @@ done: nxt_printf("njs_vm_json_test passed\n"); } else { - if (njs_vm_retval_to_ext_string(vm, &s) != NXT_OK) { - nxt_printf("njs_vm_retval_to_ext_string() failed\n"); + if (njs_vm_retval_string(vm, &s) != NXT_OK) { + nxt_printf("njs_vm_retval_string() failed\n"); } else { nxt_printf("%V\n", &s); -- 2.47.3