diff --git a/lib/common/asar.js b/lib/common/asar.js index eac5213afe2fa..08e20426e5644 100644 --- a/lib/common/asar.js +++ b/lib/common/asar.js @@ -143,10 +143,10 @@ return error } - const overrideAPISync = function (module, name, pathArgumentIndex) { + const overrideAPISync = function (module, name, pathArgumentIndex, fromAsync) { if (pathArgumentIndex == null) pathArgumentIndex = 0 const old = module[name] - module[name] = function () { + const func = function () { const pathArgument = arguments[pathArgumentIndex] const { isAsar, asarPath, filePath } = splitPath(pathArgument) if (!isAsar) return old.apply(this, arguments) @@ -160,6 +160,10 @@ arguments[pathArgumentIndex] = newPath return old.apply(this, arguments) } + if (fromAsync) { + return func + } + module[name] = func } const overrideAPI = function (module, name, pathArgumentIndex) { @@ -172,7 +176,7 @@ const callback = arguments[arguments.length - 1] if (typeof callback !== 'function') { - return overrideAPISync(module, name, pathArgumentIndex) + return overrideAPISync(module, name, pathArgumentIndex, true).apply(this, arguments) } const archive = getOrCreateArchive(asarPath) diff --git a/spec/asar-spec.js b/spec/asar-spec.js index 9ded5fe6fbd75..bc26959fbfb62 100644 --- a/spec/asar-spec.js +++ b/spec/asar-spec.js @@ -912,6 +912,18 @@ describe('asar package', function () { }) }) + it('executes binaries without callback', function (done) { + const process = execFile(echo, ['test']) + process.on('close', function (code) { + assert.strictEqual(code, 0) + done() + }) + process.on('error', function () { + assert.fail() + done() + }) + }) + it('execFileSync executes binaries', function () { const output = execFileSync(echo, ['test']) assert.strictEqual(String(output), 'test\n')