diff --git a/lodash.js b/lodash.js index ac687729d..c6006e01f 100644 --- a/lodash.js +++ b/lodash.js @@ -3394,6 +3394,9 @@ length = values.length, seen = array; + if (array === values) { + values = copyArray(values); + } if (iteratee) { seen = arrayMap(array, baseUnary(iteratee)); } diff --git a/test/test.js b/test/test.js index 736e0decd..ae1921c44 100644 --- a/test/test.js +++ b/test/test.js @@ -18081,6 +18081,21 @@ /*--------------------------------------------------------------------------*/ + QUnit.module('lodash.pullAll'); + + (function() { + QUnit.test('should work with the same value for `array` and `values`', function(assert) { + assert.expect(1); + + var array = [{ 'a': 1 }, { 'b': 2 }], + actual = _.pullAll(array, array); + + assert.deepEqual(actual, []); + }); + }()); + + /*--------------------------------------------------------------------------*/ + QUnit.module('lodash.pullAllBy'); (function() {