Avoid closing a WriteStream before it has been opened.

v0.7.4-release
Tobie Langel 2010-09-08 13:19:25 +02:00 committed by Ryan Dahl
parent 75f922c863
commit f5e4047064
2 changed files with 34 additions and 12 deletions

View File

@ -949,20 +949,23 @@ WriteStream.prototype.destroy = function (cb) {
var self = this;
this.writeable = false;
fs.close(self.fd, function(err) {
if (err) {
if (cb) {
cb(err);
function close() {
fs.close(self.fd, function(err) {
if (err) {
if (cb) { cb(err); }
self.emit('error', err);
return;
}
self.emit('error', err);
return;
}
if (cb) { cb(null); }
self.emit('close');
});
}
if (cb) {
cb(null);
}
self.emit('close');
});
if (this.fd) {
close();
} else {
this.addListener('open', close);
}
};

View File

@ -0,0 +1,19 @@
common = require("../common");
assert = common.assert
var path = require('path'),
fs = require('fs');
var file = path.join(common.fixturesDir, "write.txt");
(function() {
var stream = fs.createWriteStream(file),
_fs_close = fs.close;
fs.close = function(fd) {
assert.ok(fd, "fs.close must not be called without an undefined fd.")
fs.close = _fs_close;
}
stream.destroy();
})();