fix: ensure child_process.fork() doesn't modify main (#19742)

This commit is contained in:
Shelley Vohr 2019-08-15 08:01:58 -07:00 committed by GitHub
parent 680399f476
commit 33f2ec6355
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 9 deletions

View file

@ -6,11 +6,11 @@ Subject: Inherit ELECTRON_CRASHPAD_PIPE_NAME in child process
This is required for crashReporter to work correctly in node process.
diff --git a/lib/child_process.js b/lib/child_process.js
index ec429a082b081f0289507c15aa9ecc5305345ca2..7c231993e60278d3946745cba15c458962556581 100644
index 2f478625c8220fc86c34876c17c8f532d88ba922..9a79e06555b6bf5d970f96bedb2c2146d2c74a48 100644
--- a/lib/child_process.js
+++ b/lib/child_process.js
@@ -108,6 +108,10 @@ function fork(modulePath /* , args, options */) {
@@ -107,6 +107,10 @@ function fork(modulePath /* , args, options */) {
options.env = Object.create(options.env || process.env)
options.env.ELECTRON_RUN_AS_NODE = 1;
+ if (process.platform === 'win32') {

View file

@ -7,17 +7,16 @@ Subject: refactor: alter child_process.fork to use execute script with
When forking a child script, we setup a special environment to make the Electron binary run like the upstream node. On Mac, we use the helper app as node binary.
diff --git a/lib/child_process.js b/lib/child_process.js
index 43257e53dfe0319d6c110e94529cbc991c2bcfb3..ec429a082b081f0289507c15aa9ecc5305345ca2 100644
index 43257e53dfe0319d6c110e94529cbc991c2bcfb3..2f478625c8220fc86c34876c17c8f532d88ba922 100644
--- a/lib/child_process.js
+++ b/lib/child_process.js
@@ -102,6 +102,16 @@ function fork(modulePath /* , args, options */) {
@@ -102,6 +102,15 @@ function fork(modulePath /* , args, options */) {
throw new ERR_CHILD_PROCESS_IPC_REQUIRED('options.stdio');
}
+ if (!options.env) {
+ options.env = Object.create(process.env);
+ }
+
+ // When forking a child script, we setup a special environment to make
+ // the electron binary run like upstream Node.js
+ options.env = Object.create(options.env || process.env)
+ options.env.ELECTRON_RUN_AS_NODE = 1;
+
+ if (!options.execPath && process.type && process.platform == 'darwin') {