diff --git a/lib/buffer.js b/lib/buffer.js index 19261b9ad26e75c..5411ca34aadc711 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -31,6 +31,7 @@ const { MathMin, MathTrunc, NumberIsNaN, + NumberIsInteger, NumberMAX_SAFE_INTEGER, NumberMIN_SAFE_INTEGER, ObjectDefineProperties, @@ -213,7 +214,7 @@ function _copy(source, target, targetStart, sourceStart, sourceEnd) { if (targetStart === undefined) { targetStart = 0; } else { - targetStart = toInteger(targetStart, 0); + targetStart = NumberIsInteger(targetStart) ? targetStart : toInteger(targetStart, 0); if (targetStart < 0) throw new ERR_OUT_OF_RANGE('targetStart', '>= 0', targetStart); } @@ -221,7 +222,7 @@ function _copy(source, target, targetStart, sourceStart, sourceEnd) { if (sourceStart === undefined) { sourceStart = 0; } else { - sourceStart = toInteger(sourceStart, 0); + sourceStart = NumberIsInteger(sourceStart) ? sourceStart : toInteger(sourceStart, 0); if (sourceStart < 0 || sourceStart > source.length) throw new ERR_OUT_OF_RANGE('sourceStart', `>= 0 && <= ${source.length}`, sourceStart); } @@ -229,7 +230,7 @@ function _copy(source, target, targetStart, sourceStart, sourceEnd) { if (sourceEnd === undefined) { sourceEnd = source.length; } else { - sourceEnd = toInteger(sourceEnd, 0); + sourceEnd = NumberIsInteger(sourceEnd) ? sourceEnd : toInteger(sourceEnd, 0); if (sourceEnd < 0) throw new ERR_OUT_OF_RANGE('sourceEnd', '>= 0', sourceEnd); }