From f249d6554cfb7e7b6980f7766fac114996e43851 Mon Sep 17 00:00:00 2001 From: unkelpehr Date: Wed, 8 Nov 2017 17:16:55 +0100 Subject: [PATCH 1/2] make sure the readStream is open before initializing a writeStream --- lib/copy/ncp.js | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/lib/copy/ncp.js b/lib/copy/ncp.js index 9670ee02..11ffaada 100644 --- a/lib/copy/ncp.js +++ b/lib/copy/ncp.js @@ -96,30 +96,34 @@ function ncp (source, dest, options, callback) { function copyFile (file, target) { var readStream = fs.createReadStream(file.name) - var writeStream = fs.createWriteStream(target, { mode: file.mode }) readStream.on('error', onError) - writeStream.on('error', onError) - if (transform) { - transform(readStream, writeStream, file) - } else { - writeStream.on('open', function () { - readStream.pipe(writeStream) - }) - } + readStream.once('open', function () { + var writeStream = fs.createWriteStream(target, { mode: file.mode }) + + writeStream.on('error', onError) + + if (transform) { + transform(readStream, writeStream, file) + } else { + writeStream.on('open', function () { + readStream.pipe(writeStream) + }) + } - writeStream.once('close', function () { - fs.chmod(target, file.mode, function (err) { - if (err) return onError(err) - if (preserveTimestamps) { - utimes.utimesMillis(target, file.atime, file.mtime, function (err) { - if (err) return onError(err) - return doneOne() - }) - } else { - doneOne() - } + writeStream.once('close', function () { + fs.chmod(target, file.mode, function (err) { + if (err) return onError(err) + if (preserveTimestamps) { + utimes.utimesMillis(target, file.atime, file.mtime, function (err) { + if (err) return onError(err) + return doneOne() + }) + } else { + doneOne() + } + }) }) }) } From 460294514ced95a04c59db760736dc4f8ba33ab4 Mon Sep 17 00:00:00 2001 From: unkelpehr Date: Wed, 8 Nov 2017 19:20:12 +0100 Subject: [PATCH 2/2] small lint fix --- lib/copy/ncp.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/copy/ncp.js b/lib/copy/ncp.js index 11ffaada..5007839a 100644 --- a/lib/copy/ncp.js +++ b/lib/copy/ncp.js @@ -101,9 +101,9 @@ function ncp (source, dest, options, callback) { readStream.once('open', function () { var writeStream = fs.createWriteStream(target, { mode: file.mode }) - + writeStream.on('error', onError) - + if (transform) { transform(readStream, writeStream, file) } else {