From 2ee0634db390cea6c61b6bdbcca391010dbe62c4 Mon Sep 17 00:00:00 2001 From: jdalton Date: Wed, 28 Jan 2015 23:33:30 -0800 Subject: [PATCH] Should coerce float `start` and `end` params of `_.slice` to integers. --- lodash.src.js | 3 ++- test/test.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lodash.src.js b/lodash.src.js index bd7e17321..5eaffd738 100644 --- a/lodash.src.js +++ b/lodash.src.js @@ -2661,7 +2661,8 @@ if (end < 0) { end += length; } - length = start > end ? 0 : (end - start); + length = start > end ? 0 : (end - start) >>> 0; + start >>>= 0; var result = Array(length); while (++index < length) { diff --git a/test/test.js b/test/test.js index 41f9281c3..bef350443 100644 --- a/test/test.js +++ b/test/test.js @@ -11690,8 +11690,8 @@ }); test('should coerce `start` and `end` to finite numbers', 1, function() { - var actual = [_.slice(array, '0', 1), _.slice(array, 0, '1'), _.slice(array, '1'), _.slice(array, NaN, 1), _.slice(array, 1, NaN)]; - deepEqual(actual, [[1], [1], [2, 3], [1], []]); + var actual = [_.slice(array, 0.1, 1.1), _.slice(array, '0', 1), _.slice(array, 0, '1'), _.slice(array, '1'), _.slice(array, NaN, 1), _.slice(array, 1, NaN)]; + deepEqual(actual, [[1], [1], [1], [2, 3], [1], []]); }); test('should work as an iteratee for `_.map`', 2, function() {