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));