Bug 786111: Prevent recursive calls to nsSMILAnimationController::DoSample(). r=birtles sr=roc
authorDaniel Holbert <dholbert@cs.stanford.edu>
Tue, 28 Aug 2012 22:32:56 -0700
changeset 110038 ff45232365137efd148d881b86635582f24616d8
parent 110037 2f34d5cff8a036bd3ed23731720e6e6e5601c6aa
child 110039 febcaf392a68542cc9790a2ae35129f281fa925c
push id1708
push userakeybl@mozilla.com
push dateMon, 19 Nov 2012 21:10:21 +0000
treeherdermozilla-beta@27b14fe50103 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbirtles, roc
bugs786111
milestone18.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 786111: Prevent recursive calls to nsSMILAnimationController::DoSample(). r=birtles sr=roc
content/smil/nsSMILAnimationController.cpp
--- a/content/smil/nsSMILAnimationController.cpp
+++ b/content/smil/nsSMILAnimationController.cpp
@@ -353,16 +353,20 @@ nsSMILAnimationController::DoSample()
 
 void
 nsSMILAnimationController::DoSample(bool aSkipUnchangedContainers)
 {
   if (!mDocument) {
     NS_ERROR("Shouldn't be sampling after document has disconnected");
     return;
   }
+  if (mRunningSample) {
+    NS_ERROR("Shouldn't be recursively sampling");
+    return;
+  }
 
   mResampleNeeded = false;
   // Set running sample flag -- do this before flushing styles so that when we
   // flush styles we don't end up requesting extra samples
   mRunningSample = true;
   nsCOMPtr<nsIDocument> kungFuDeathGrip(mDocument);  // keeps 'this' alive too
   mDocument->FlushPendingNotifications(Flush_Style);