Browse Source

fs: handle fractional or NaN ReadStream buffer size

Fixes #2320.
v0.7.4-release
Ben Noordhuis 13 years ago
parent
commit
b1b3dc62ff
  1. 2
      lib/fs.js
  2. 9
      test/simple/test-fs-read-stream.js

2
lib/fs.js

@ -1092,7 +1092,7 @@ ReadStream.prototype._read = function() {
// thread pool another read() finishes up the pool, and allocates a new // thread pool another read() finishes up the pool, and allocates a new
// one. // one.
var thisPool = pool; 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; var start = pool.used;
if (this.pos !== undefined) { if (this.pos !== undefined) {

9
test/simple/test-fs-read-stream.js

@ -133,6 +133,15 @@ file5.on('end', function() {
assert.equal(file5.data, 'yz\n'); 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() { assert.throws(function() {
fs.createReadStream(rangeFile, {start: 10, end: 2}); fs.createReadStream(rangeFile, {start: 10, end: 2});

Loading…
Cancel
Save