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>
This commit is contained in:
parent
b5e818197f
commit
fb4d5286b0
@ -641,6 +641,11 @@ void Environment::RunAndClearNativeImmediates() {
|
|||||||
if (!try_catch.HasTerminated())
|
if (!try_catch.HasTerminated())
|
||||||
FatalException(isolate(), try_catch);
|
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
|
// Bail out, remove the already executed callbacks from list
|
||||||
// and set up a new TryCatch for the other pending callbacks.
|
// and set up a new TryCatch for the other pending callbacks.
|
||||||
std::move_backward(it, list.end(), list.begin() + (list.end() - it));
|
std::move_backward(it, list.end(), list.begin() + (list.end() - it));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user