From b1b3dc62ff13f5bd5be1ec75630b0308c48d6399 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 13 Dec 2011 16:30:53 +0100 Subject: [PATCH] fs: handle fractional or NaN ReadStream buffer size Fixes #2320. --- lib/fs.js | 2 +- test/simple/test-fs-read-stream.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/fs.js b/lib/fs.js index e9efece32b..61adbdf9b9 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 63e9b1ae41..dbb5fbf847 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});