Bug 1157323 - Part 6: A minor optimization to Cancel(). draft
authorByron Campen [:bwc] <docfaraday@gmail.com>
Fri, 05 Aug 2016 13:45:26 -0500
changeset 404999 cb347edad0c3378ca387ee2a4ff93f19285094d6
parent 404998 b7f622f9e664919636f36fa85402336fb41dc697
child 405000 610f11c91b3355b51f339151b115af4ca124bfc9
push id27365
push userbcampen@mozilla.com
push dateWed, 24 Aug 2016 15:38:38 +0000
bugs1157323
milestone51.0a1
Bug 1157323 - Part 6: A minor optimization to Cancel(). MozReview-Commit-ID: BU8eLqGnGOA
xpcom/threads/nsTimerImpl.cpp
--- a/xpcom/threads/nsTimerImpl.cpp
+++ b/xpcom/threads/nsTimerImpl.cpp
@@ -307,16 +307,21 @@ nsTimerImpl::Init(nsIObserver* aObserver
   NS_ADDREF(mCallback.o);
 
   return InitCommon(aDelay, aType);
 }
 
 NS_IMETHODIMP
 nsTimerImpl::Cancel()
 {
+  // mCallbackType is never written by the TimerThread. We assume everyone
+  // else plays nice wrt threadsafety.
+  if (mCallbackType == CallbackType::Unknown) {
+    return NS_OK;
+  }
 
   if (gThread) {
     gThread->RemoveTimer(this);
   }
 
   ReleaseCallback();
 
   return NS_OK;