diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-06-06 00:27:42 +0300 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-06-14 14:03:11 +0300 |
commit | fb4d5286b05dd02054ae0e471ab9d3c3b3845381 (patch) | |
tree | 3dc8cbb039ea68a373b1808cb1dbe9b6d8c2bcd4 /src/env.cc | |
parent | b5e818197f127b36f18fb0d0481928227b88b053 (diff) |
src: fix off-by-one error in native SetImmediate
Previously, the throwing callback would have been re-executed in case
of an exception. This patch corrects the calculation to exclude the
callback.
PR-URL: https://github.com/nodejs/node/pull/28082
Fixes: https://github.com/nodejs/node/issues/26754
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/env.cc')
-rw-r--r-- | src/env.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/env.cc b/src/env.cc index f541188e73b..f0f4fc30688 100644 --- a/src/env.cc +++ b/src/env.cc @@ -641,6 +641,11 @@ void Environment::RunAndClearNativeImmediates() { if (!try_catch.HasTerminated()) FatalException(isolate(), try_catch); + // We are done with the current callback. Increase the counter so that + // the steps below make everything *after* the current item part of + // the new list. + it++; + // Bail out, remove the already executed callbacks from list // and set up a new TryCatch for the other pending callbacks. std::move_backward(it, list.end(), list.begin() + (list.end() - it)); |