fs: extract start and end check into checkPosition
PR-URL: https://github.com/nodejs/node/pull/25264 Reviewed-By: Weijia Wang <starkwang@126.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
parent
519a11b24f
commit
98ed23cfaa
@ -36,6 +36,19 @@ function allocNewPool(poolSize) {
|
|||||||
pool.used = 0;
|
pool.used = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check the `this.start` and `this.end` of stream.
|
||||||
|
function checkPosition(pos, name) {
|
||||||
|
if (!Number.isSafeInteger(pos)) {
|
||||||
|
validateNumber(pos, name);
|
||||||
|
if (!Number.isInteger(pos))
|
||||||
|
throw new ERR_OUT_OF_RANGE(name, 'an integer', pos);
|
||||||
|
throw new ERR_OUT_OF_RANGE(name, '>= 0 and <= 2 ** 53 - 1', pos);
|
||||||
|
}
|
||||||
|
if (pos < 0) {
|
||||||
|
throw new ERR_OUT_OF_RANGE(name, '>= 0 and <= 2 ** 53 - 1', pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function ReadStream(path, options) {
|
function ReadStream(path, options) {
|
||||||
if (!(this instanceof ReadStream))
|
if (!(this instanceof ReadStream))
|
||||||
return new ReadStream(path, options);
|
return new ReadStream(path, options);
|
||||||
@ -64,23 +77,7 @@ function ReadStream(path, options) {
|
|||||||
this.closed = false;
|
this.closed = false;
|
||||||
|
|
||||||
if (this.start !== undefined) {
|
if (this.start !== undefined) {
|
||||||
if (!Number.isSafeInteger(this.start)) {
|
checkPosition(this.start, 'start');
|
||||||
validateNumber(this.start, 'start');
|
|
||||||
if (!Number.isInteger(this.start))
|
|
||||||
throw new ERR_OUT_OF_RANGE('start', 'an integer', this.start);
|
|
||||||
throw new ERR_OUT_OF_RANGE(
|
|
||||||
'start',
|
|
||||||
'>= 0 and <= 2 ** 53 - 1',
|
|
||||||
this.start
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (this.start < 0) {
|
|
||||||
throw new ERR_OUT_OF_RANGE(
|
|
||||||
'start',
|
|
||||||
'>= 0 and <= 2 ** 53 - 1',
|
|
||||||
this.start
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.pos = this.start;
|
this.pos = this.start;
|
||||||
}
|
}
|
||||||
@ -88,17 +85,7 @@ function ReadStream(path, options) {
|
|||||||
if (this.end === undefined) {
|
if (this.end === undefined) {
|
||||||
this.end = Infinity;
|
this.end = Infinity;
|
||||||
} else if (this.end !== Infinity) {
|
} else if (this.end !== Infinity) {
|
||||||
if (!Number.isSafeInteger(this.end)) {
|
checkPosition(this.end, 'end');
|
||||||
if (typeof this.end !== 'number')
|
|
||||||
throw new ERR_INVALID_ARG_TYPE('end', 'number', this.end);
|
|
||||||
if (!Number.isInteger(this.end))
|
|
||||||
throw new ERR_OUT_OF_RANGE('end', 'an integer', this.end);
|
|
||||||
throw new ERR_OUT_OF_RANGE('end', '>= 0 and <= 2 ** 53 - 1', this.end);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.end < 0) {
|
|
||||||
throw new ERR_OUT_OF_RANGE('end', '>= 0 and <= 2 ** 53 - 1', this.end);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.start !== undefined && this.start > this.end) {
|
if (this.start !== undefined && this.start > this.end) {
|
||||||
throw new ERR_OUT_OF_RANGE(
|
throw new ERR_OUT_OF_RANGE(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user