From 694ac6de5ba2591c8d3d56017b2423bd3e39f769 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 18 May 2018 16:59:37 +0200 Subject: [PATCH] src: break out of timers loop if `!can_call_into_js()` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise, this turns into an infinite loop when the flag is set, because it makes `MakeCallback()` return immediately. PR-URL: https://github.com/nodejs/node/pull/20884 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Anatoli Papirovski Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Tobias Nießen --- src/timer_wrap.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/timer_wrap.cc b/src/timer_wrap.cc index 1a5a22c25ee..b87430dad8a 100644 --- a/src/timer_wrap.cc +++ b/src/timer_wrap.cc @@ -134,7 +134,9 @@ class TimerWrap : public HandleWrap { do { ret = wrap->MakeCallback(env->timers_callback_function(), 1, args) .ToLocalChecked(); - } while (ret->IsUndefined() && !env->tick_info()->has_thrown()); + } while (ret->IsUndefined() && + !env->tick_info()->has_thrown() && + env->can_call_into_js()); } static void Now(const FunctionCallbackInfo& args) {