From c995dbb936bf0600d97bfd205fffe00fe7ece04f Mon Sep 17 00:00:00 2001 From: hongzhidao Date: Thu, 25 Apr 2019 15:56:44 +0300 Subject: [PATCH] Fixed njs_vmcode_restart(). --- njs/njs_vm.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/njs/njs_vm.c b/njs/njs_vm.c index da776fda..53669854 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -2852,17 +2852,21 @@ njs_vmcode_restart(njs_vm_t *vm, njs_value_t *invld1, njs_value_t *invld2) ret = vmcode->code.operation(vm, value1, &frame->trap_values[1]); + if (nxt_slow_path(ret == NJS_ERROR)) { + return ret; + } + if (nxt_slow_path(ret == NJS_TRAP)) { /* Trap handlers are not reentrant. */ njs_internal_error(vm, "trap inside restart instruction"); return NXT_ERROR; } - retval = njs_vmcode_operand(vm, vmcode->operand1); - - njs_release(vm, retval); - - *retval = vm->retval; + if (vmcode->code.retval) { + retval = njs_vmcode_operand(vm, vmcode->operand1); + njs_release(vm, retval); + *retval = vm->retval; + } return ret; } -- 2.47.3