From 8ff7954165205b2f3ade222d717ac62edb502932 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 4 Oct 2010 12:22:59 -0700 Subject: [PATCH] Fix #325. Add test and check for zero-length file contents in fs.readFileSync --- lib/fs.js | 4 +++- test/simple/test-fs-readfile-empty.js | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/fs.js b/lib/fs.js index 0bbb14b6d4..b5d1ae0aec 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -112,9 +112,11 @@ fs.readFileSync = function (path, encoding) { i.copy(buffer,offset,0,i._bytesRead); offset += i._bytesRead; }) - } else { + } else if (buffers.length) { //buffers has exactly 1 (possibly zero length) buffer, so this should be a shortcut buffer = buffers[0].slice(0, buffers[0]._bytesRead); + } else { + buffer = new Buffer(0); } if (encoding) buffer = buffer.toString(encoding); diff --git a/test/simple/test-fs-readfile-empty.js b/test/simple/test-fs-readfile-empty.js index 7b3ab1f2dd..090f668e1f 100644 --- a/test/simple/test-fs-readfile-empty.js +++ b/test/simple/test-fs-readfile-empty.js @@ -12,4 +12,7 @@ fs.readFile(fn, function(err, data) { fs.readFile(fn, 'utf8', function(err, data) { assert.strictEqual('', data); -}); \ No newline at end of file +}); + +assert.ok(fs.readFileSync(fn)); +assert.strictEqual('', fs.readFileSync(fn, 'utf8'));