From: hongzhidao Date: Thu, 25 Apr 2019 12:56:44 +0000 (+0300) Subject: Fixed njs_vmcode_restart(). X-Git-Tag: 0.3.2~45 X-Git-Url: http://git.kaiwu.me/sitemap.xml?a=commitdiff_plain;h=c995dbb936bf0600d97bfd205fffe00fe7ece04f;p=njs.git Fixed njs_vmcode_restart(). --- 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; }