diff --git a/lib/fs.js b/lib/fs.js index e9efece32b98..61adbdf9b99d 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -1092,7 +1092,7 @@ ReadStream.prototype._read = function() { // thread pool another read() finishes up the pool, and allocates a new // one. var thisPool = pool; - var toRead = Math.min(pool.length - pool.used, this.bufferSize); + var toRead = Math.min(pool.length - pool.used, ~~this.bufferSize); var start = pool.used; if (this.pos !== undefined) { diff --git a/test/simple/test-fs-read-stream.js b/test/simple/test-fs-read-stream.js index 63e9b1ae4135..dbb5fbf84731 100644 --- a/test/simple/test-fs-read-stream.js +++ b/test/simple/test-fs-read-stream.js @@ -133,6 +133,15 @@ file5.on('end', function() { assert.equal(file5.data, 'yz\n'); }); +// https://github.com/joyent/node/issues/2320 +var file6 = fs.createReadStream(rangeFile, {bufferSize: 1.23, start: 1}); +file6.data = ''; +file6.on('data', function(data) { + file6.data += data.toString('utf-8'); +}); +file6.on('end', function() { + assert.equal(file6.data, 'yz\n'); +}); assert.throws(function() { fs.createReadStream(rangeFile, {start: 10, end: 2});