Skip to content

Commit

Permalink
[ISSUE nodejs#2554 nodejs#2567] throw if fs args for 'start' or 'end'…
Browse files Browse the repository at this point in the history
… are strings
  • Loading branch information
AJ ONeal committed Feb 18, 2012
1 parent 23c4278 commit 79e9f6a
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -1038,8 +1038,13 @@ var ReadStream = fs.ReadStream = function(path, options) {
if (this.encoding) this.setEncoding(this.encoding);

if (this.start !== undefined) {
if ('number' !== typeof this.start) {
throw TypeError("'start' must be a Number or left undefined, not a string containing a number");
}
if (this.end === undefined) {
this.end = Infinity;
} else if ('number' !== typeof this.end) {
throw TypeError("'end' must be a Number or left undefined, not a string containing a number");
}

if (this.start > this.end) {
Expand Down Expand Up @@ -1226,6 +1231,9 @@ var WriteStream = fs.WriteStream = function(path, options) {
}

if (this.start !== undefined) {
if ('number' !== typeof this.start) {
throw TypeError("'start' must be a Number or left undefined, not a string containing a number");
}
if (this.start < 0) {
throw new Error('start must be >= zero');
}
Expand Down
26 changes: 26 additions & 0 deletions test/simple/test-fs-non-number-arguments-throw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
(function () {
"use strict";

var assert = require('assert'),
fs = require('./fs'),
saneEmitter;

saneEmitter = fs.createReadStream(__filename, { start: 17, end: 29 });

assert.throws(function () {
fs.createReadStream(__filename, { start: "17", end: 29 });
}, "start as string didn't throw an error for createReadStream");

assert.throws(function () {
fs.createReadStream(__filename, { start: 17, end: "29" });
}, "end as string didn't throw an error");

assert.throws(function () {
fs.createWriteStream(__filename, { start: "17" });
}, "start as string didn't throw an error for createWriteStream");

saneEmitter.on('data', function (data) {
// a sanity check when using numbers instead of strings
assert.strictEqual('"use strict";', data.toString('utf8'), 'read ' + data.toString('utf8') + ' instead of "use strict";');
});
}());

0 comments on commit 79e9f6a

Please sign in to comment.