From 222a51f0a979bf8b470ba72e73353c9b2f44b809 Mon Sep 17 00:00:00 2001 From: Krishna Kant Sharma Date: Fri, 19 Jun 2015 12:00:36 +0530 Subject: [PATCH 1/2] made _finishChunk run after _startIfNeededAndPushData is done --- lib/size-chunker.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/size-chunker.js b/lib/size-chunker.js index 401957b..b183346 100644 --- a/lib/size-chunker.js +++ b/lib/size-chunker.js @@ -66,15 +66,17 @@ this._bytesPassed += buf.length; }; - SizeChunker.prototype._startIfNeededAndPushData = function(buf) { + SizeChunker.prototype._startIfNeededAndPushData = function(buf, done) { if (this._lastEmittedChunk != this._currentChunk) { this._startChunk(function() { this._lastEmittedChunk = this._currentChunk; this._pushData(buf); + done(); }.bind(this)) } else { this._pushData(buf); + done(); } }; @@ -89,19 +91,20 @@ if (this._bytesPassed + chunk.length < this._chunkSize) { - this._startIfNeededAndPushData(chunk); - done(); + this._startIfNeededAndPushData(chunk, done); } else { remainder = bytesLeave - chunk.length; if (remainder === 0) { - this._startIfNeededAndPushData(chunk); - this._finishChunk(done); + this._startIfNeededAndPushData(chunk, function() { + this._finishChunk(done); + }.bind(this)); } else { - this._startIfNeededAndPushData(chunk.slice(0, bytesLeave)); - chunk = chunk.slice(bytesLeave); - this._finishChunk(_do_transform); + this._startIfNeededAndPushData(chunk.slice(0, bytesLeave), function() { + chunk = chunk.slice(bytesLeave); + this._finishChunk(_do_transform); + }.bind(this)); } } From e851489f778c6f6fa7afb060a5c291c51e73d9f5 Mon Sep 17 00:00:00 2001 From: Krishna Kant Sharma Date: Fri, 19 Jun 2015 13:41:17 +0530 Subject: [PATCH 2/2] making _finishChunk for N run before _startIfNeededAndPushData for N+1 --- lib/size-chunker.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/size-chunker.js b/lib/size-chunker.js index b183346..33d7b0f 100644 --- a/lib/size-chunker.js +++ b/lib/size-chunker.js @@ -97,13 +97,15 @@ remainder = bytesLeave - chunk.length; if (remainder === 0) { - this._startIfNeededAndPushData(chunk, function() { - this._finishChunk(done); + this._finishChunk(function() { + this._startIfNeededAndPushData(chunk, done); }.bind(this)); } else { - this._startIfNeededAndPushData(chunk.slice(0, bytesLeave), function() { - chunk = chunk.slice(bytesLeave); - this._finishChunk(_do_transform); + this._finishChunk(function() { + this._startIfNeededAndPushData(chunk.slice(0, bytesLeave), function() { + chunk = chunk.slice(bytesLeave); + _do_transform(); + }); }.bind(this)); } }