diff options
| author | Dhruv Manek | 2011-12-18 18:33:25 -0800 |
|---|---|---|
| committer | Igor Minar | 2012-01-06 12:19:39 -0800 |
| commit | 08029c7b72a857ffe52f302ed79ae12db9efcc08 (patch) | |
| tree | b51e6657d2a5f7d373ab67f3a076076001af4162 | |
| parent | 0bf611087b2773fd36cf95c938d1cda8e65ffb2b (diff) | |
| download | angular.js-08029c7b72a857ffe52f302ed79ae12db9efcc08.tar.bz2 | |
fix(angular.copy): throw Error if source and destination are identical
Closes #693
| -rw-r--r-- | src/Angular.js | 1 | ||||
| -rw-r--r-- | test/AngularSpec.js | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/Angular.js b/src/Angular.js index 2a9fb556..c14c6ea0 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -597,6 +597,7 @@ function copy(source, destination){ } } } else { + if (source === destination) throw Error("Can't copy equivalent objects or arrays"); if (isArray(source)) { while(destination.length) { destination.pop(); diff --git a/test/AngularSpec.js b/test/AngularSpec.js index 1cb6af5e..70997240 100644 --- a/test/AngularSpec.js +++ b/test/AngularSpec.js @@ -65,6 +65,14 @@ describe('angular', function() { it('should throw an exception if a Window is being copied', function() { expect(function() { copy(window); }).toThrow("Can't copy Window or Scope"); }); + + it('should throw an exception when source and destination are equivalent', function() { + var src, dst; + src = dst = {key: 'value'}; + expect(function() { copy(src, dst); }).toThrow("Can't copy equivalent objects or arrays"); + src = dst = [2, 4]; + expect(function() { copy(src, dst); }).toThrow("Can't copy equivalent objects or arrays"); + }); }); describe('equals', function() { |
