From 47a5b227ccfef41f0e3189e9c8e976e6f9cfd7b3 Mon Sep 17 00:00:00 2001 From: jdalton Date: Sun, 25 Jan 2015 12:12:41 -0800 Subject: [PATCH] Ensure `_.ary` treats negative `n` values as `0`. --- lodash.src.js | 2 +- test/test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lodash.src.js b/lodash.src.js index 01cfbb482..0ba7a9123 100644 --- a/lodash.src.js +++ b/lodash.src.js @@ -6683,7 +6683,7 @@ if (guard && isIterateeCall(func, n, guard)) { n = null; } - n = n == null ? func.length : (+n || 0); + n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); return createWrapper(func, ARY_FLAG, null, null, null, null, n); } diff --git a/test/test.js b/test/test.js index f7b5f993f..2eb3a2b6c 100644 --- a/test/test.js +++ b/test/test.js @@ -896,6 +896,16 @@ deepEqual(capped('a', 'b', 'c', 'd'), ['a', 'b', 'c']); }); + test('should treat a negative `n` as `0`', 1, function() { + var capped = _.ary(fn, -1); + + try { + var actual = capped('a'); + } catch(e) {} + + deepEqual(actual, []); + }); + test('should work when provided less than the capped numer of arguments', 1, function() { var capped = _.ary(fn, 3); deepEqual(capped('a'), ['a']);