From 44f00e9aa18b8638b91dc6487afb564f2a7868b9 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Thu, 30 Aug 2018 20:21:43 +0300 Subject: [PATCH] Improved handling of traps inside trap handlers. --- njs/njs_vm.c | 6 ++++++ 1 file changed, 6 insertions(+) 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); -- 2.47.3