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 <daniel.bevenius@gmail.com>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
Anna Henningsen 2019-01-12 21:28:48 +01:00 committed by Joyee Cheung
parent 84e90decd5
commit 8528c21188
No known key found for this signature in database
GPG Key ID: 92B78A53C8303B8D

View File

@ -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<Value> code;
if (!process_object->Get(env->context(), exit_code).ToLocal(&code) ||
!code->IsInt32()) {
exit(1);
env->Exit(1);
}
exit(code.As<Int32>()->Value());
env->Exit(code.As<Int32>()->Value());
}
}
}