Skip to content

Commit 4f824cd

Browse files
committed
fix #156
1 parent e772fa6 commit 4f824cd

2 files changed

Lines changed: 20 additions & 5 deletions

File tree

libs/core/Converter.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ function Converter(params, options) {
7171
util.inherits(Converter, Transform);
7272
function emitDone(conv) {
7373
return function (err) {
74-
process.nextTick(function () {
75-
conv.emit('done', err);
76-
});
77-
};
74+
if (!conv._hasDone) {
75+
conv._hasDone = true;
76+
process.nextTick(function () {
77+
conv.emit('done', err);
78+
});
79+
};
80+
}
7881
}
7982

8083
Converter.prototype._transform = function (data, encoding, cb) {
@@ -418,7 +421,7 @@ Converter.prototype.fromString = function (csvString, cb) {
418421

419422
Converter.prototype.wrapCallback = function (cb, clean) {
420423
if (clean === undefined) {
421-
clean = function () {};
424+
clean = function () { };
422425
}
423426
if (cb && typeof cb === "function") {
424427
this.once("end_parsed", function (res) {

test/testCSVConverter2.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,4 +461,16 @@ describe("CSV Converter", function () {
461461
done();
462462
});
463463
});
464+
it ("should only call done once",function(done){
465+
var counter=0;
466+
csv()
467+
.fromString('"a","b", "c""')
468+
.on('done',function(){
469+
counter++;
470+
});
471+
setTimeout(function(){
472+
assert.equal(counter,1);
473+
done();
474+
},100);
475+
})
464476
});

0 commit comments

Comments
 (0)