diff --git a/lib/fs.js b/lib/fs.js index cedb9b1614..f2fcb69a0e 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -148,18 +148,18 @@ fs.readFile = function(path, encoding_) { }); } + if (bytesRead === 0) { + return close(); + } + pos += bytesRead; if (size !== 0) { if (pos === size) close(); else read(); } else { // unknown size, just read until we don't get bytes. - if (bytesRead > 0) { - buffers.push(buffer.slice(0, bytesRead)); - read(); - } else { - close(); - } + buffers.push(buffer.slice(0, bytesRead)); + read(); } } @@ -168,6 +168,8 @@ fs.readFile = function(path, encoding_) { if (size === 0) { // collected the data into the buffers list. buffer = Buffer.concat(buffers, pos); + } else if (pos < size) { + buffer = buffer.slice(0, pos); } if (encoding) buffer = buffer.toString(encoding);