From: Dmitry Volyntsev Date: Thu, 30 Aug 2018 17:21:43 +0000 (+0300) Subject: Improved handling of traps inside trap handlers. X-Git-Tag: 0.2.4~11 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=44f00e9aa18b8638b91dc6487afb564f2a7868b9;p=njs.git Improved handling of traps inside trap handlers. --- diff --git a/njs/njs_vm.c b/njs/njs_vm.c index 0c68234e..7527749d 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -3280,6 +3280,12 @@ 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_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);