aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/rootScope.js
diff options
context:
space:
mode:
authorNoam Lewis2013-12-30 20:10:23 -0500
committerJeff Cross2014-01-13 09:53:38 -0800
commit2cd09c9f0e7766bcd191662841b7b1ffc3b6dc3f (patch)
treea4cd4eebf7376ebd9370fe96f2cabb28f74e74eb /src/ng/rootScope.js
parent34fee06ca7db16549764f53c0382f2b6e2482201 (diff)
downloadangular.js-2cd09c9f0e7766bcd191662841b7b1ffc3b6dc3f.tar.bz2
fix($rootScope): prevent infinite $digest by checking if asyncQueue is empty when decrementing ttl
An infinite $digest loop can be caused by expressions that invoke a promise. The problem is that $digest does not decrement ttl unless it finds dirty changes; it should check also if asyncQueue is empty. Generally the condition for decrementing ttl should be the same as the condition for terminating the $digest loop. Fixes #2622
Diffstat (limited to 'src/ng/rootScope.js')
-rw-r--r--src/ng/rootScope.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js
index 8259bf88..bbf290b2 100644
--- a/src/ng/rootScope.js
+++ b/src/ng/rootScope.js
@@ -632,7 +632,7 @@ function $RootScopeProvider(){
// `break traverseScopesLoop;` takes us to here
- if(dirty && !(ttl--)) {
+ if((dirty || asyncQueue.length) && !(ttl--)) {
clearPhase();
throw $rootScopeMinErr('infdig',
'{0} $digest() iterations reached. Aborting!\n' +