From 8cc00103a2c1abc538e092729d2ca97fe71bdae9 Mon Sep 17 00:00:00 2001 From: Markus Olsson Date: Fri, 8 Nov 2019 14:37:47 +0100 Subject: [PATCH] Make doubly sure that we have a stream --- app/src/lib/git/rebase.ts | 5 +++++ app/src/lib/progress/from-process.ts | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/lib/git/rebase.ts b/app/src/lib/git/rebase.ts index 9847da15105..178dfb6cd7c 100644 --- a/app/src/lib/git/rebase.ts +++ b/app/src/lib/git/rebase.ts @@ -323,6 +323,11 @@ function configureOptionsForRebase( return merge(options, { processCallback: (process: ChildProcess) => { + // If Node.js encounters a synchronous runtime error while spawning + // `stdout` will be undefined and the error will be emitted asynchronously + if (!process.stdout) { + return + } const parser = new GitRebaseParser(rebasedCommitCount, totalCommitCount) // rebase emits progress messages on `stdout`, not `stderr` diff --git a/app/src/lib/progress/from-process.ts b/app/src/lib/progress/from-process.ts index f3e30a75fd8..70e69524781 100644 --- a/app/src/lib/progress/from-process.ts +++ b/app/src/lib/progress/from-process.ts @@ -77,8 +77,12 @@ function createProgressProcessCallback( }) } - byline(process.stderr).on('data', (line: string) => { - progressCallback(parser.parse(line)) - }) + // If Node.js encounters a synchronous runtime error while spawning + // `stderr` will be undefined and the error will be emitted asynchronously + if (process.stderr) { + byline(process.stderr).on('data', (line: string) => { + progressCallback(parser.parse(line)) + }) + } } }