From 0897504adc1acf6457c6bd415b5022bcc6a9a4dc Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sat, 12 Jan 2019 21:28:48 +0100 Subject: [PATCH] src: call `Environment::Exit()` for fatal exceptions Call `Environment::Exit()` rather than the process-wide `exit()` function, since JS exceptions generally only affect the current JS engine instance. PR-URL: https://github.com/nodejs/node/pull/25472 Reviewed-By: Daniel Bevenius Reviewed-By: Minwoo Jung Reviewed-By: Colin Ihrig Reviewed-By: James M Snell Reviewed-By: Anatoli Papirovski Reviewed-By: Joyee Cheung --- src/node_errors.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/node_errors.cc b/src/node_errors.cc index 2a86c7402b5a64..9b55a0b92187ac 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -324,7 +324,7 @@ TryCatchScope::~TryCatchScope() { if (HasCaught() && !HasTerminated() && mode_ == CatchMode::kFatal) { HandleScope scope(env_->isolate()); ReportException(env_, Exception(), Message()); - exit(7); + env_->Exit(7); } } @@ -711,7 +711,7 @@ void FatalException(Isolate* isolate, // Failed before the process._fatalException function was added! // this is probably pretty bad. Nothing to do but report and exit. ReportException(env, error, message); - exit(6); + env->Exit(6); } else { errors::TryCatchScope fatal_try_catch(env); @@ -727,7 +727,7 @@ void FatalException(Isolate* isolate, if (fatal_try_catch.HasCaught()) { // The fatal exception function threw, so we must exit ReportException(env, fatal_try_catch); - exit(7); + env->Exit(7); } else if (caught.ToLocalChecked()->IsFalse()) { ReportException(env, error, message); @@ -738,9 +738,9 @@ void FatalException(Isolate* isolate, Local code; if (!process_object->Get(env->context(), exit_code).ToLocal(&code) || !code->IsInt32()) { - exit(1); + env->Exit(1); } - exit(code.As()->Value()); + env->Exit(code.As()->Value()); } } }