diff --git a/lib/fs.js b/lib/fs.js index 610d0532f7..dbfec123c0 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -53,12 +53,17 @@ fs.readFile = function (path, encoding_, callback) { function doRead() { // position is offset or null so we can read files on unseekable mediums binding.read(fd, buffer, offset, size - offset, offset || null, function (err, amount) { - if (err) { callback(err); return; } + if (err) { + callback(err); + binding.close(fd); + return; + } if (amount + offset < size) { offset += amount; doRead(); return; } + binding.close(fd); if (encoding) { try { callback(null, buffer.toString(encoding));