aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/rootScope.js4
-rw-r--r--test/ng/rootScopeSpec.js4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js
index ce0f8ad5..dbb93000 100644
--- a/src/ng/rootScope.js
+++ b/src/ng/rootScope.js
@@ -453,7 +453,9 @@ function $RootScopeProvider(){
}
// copy the items to oldValue and look for changes.
for (var i = 0; i < newLength; i++) {
- if (oldValue[i] !== newValue[i]) {
+ var bothNaN = (oldValue[i] !== oldValue[i]) &&
+ (newValue[i] !== newValue[i]);
+ if (!bothNaN && (oldValue[i] !== newValue[i])) {
changeDetected++;
oldValue[i] = newValue[i];
}
diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js
index 251a8ce8..2ea41489 100644
--- a/test/ng/rootScopeSpec.js
+++ b/test/ng/rootScopeSpec.js
@@ -603,6 +603,10 @@ describe('Scope', function() {
expect(log.empty()).toEqual([{newVal: [{}, []], oldVal: ['b', {}, []]}]);
});
+ it('should not infinitely digest when current value is NaN', function() {
+ $rootScope.obj = [NaN];
+ $rootScope.$digest();
+ });
it('should watch array-like objects like arrays', function () {
var arrayLikelog = [];