Title: [150068] trunk/Source/WebKit2
Revision
150068
Author
jocelyn.turco...@digia.com
Date
2013-05-14 05:54:06 -0700 (Tue, 14 May 2013)

Log Message

[WK2][Win] Fix ASSERT(DeleteTimerQueueTimer...)
https://bugs.webkit.org/show_bug.cgi?id=116039

Reviewed by Benjamin Poulain.

According to the documentation, DeleteTimerQueueTimer can be expected to return
false with an ERROR_IO_PENDING error when called from the timer's callback.

* Platform/win/WorkQueueWin.cpp:
(WorkQueue::timerCallback):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (150067 => 150068)


--- trunk/Source/WebKit2/ChangeLog	2013-05-14 12:51:59 UTC (rev 150067)
+++ trunk/Source/WebKit2/ChangeLog	2013-05-14 12:54:06 UTC (rev 150068)
@@ -1,3 +1,16 @@
+2013-05-14  Jocelyn Turcotte  <jocelyn.turco...@digia.com>
+
+        [WK2][Win] Fix ASSERT(DeleteTimerQueueTimer...)
+        https://bugs.webkit.org/show_bug.cgi?id=116039
+
+        Reviewed by Benjamin Poulain.
+
+        According to the documentation, DeleteTimerQueueTimer can be expected to return
+        false with an ERROR_IO_PENDING error when called from the timer's callback.
+
+        * Platform/win/WorkQueueWin.cpp:
+        (WorkQueue::timerCallback):
+
 2013-05-14  Alexey Proskuryakov  <a...@apple.com>
 
         Remove unused "type" field from DictionaryPopupInfo

Modified: trunk/Source/WebKit2/Platform/win/WorkQueueWin.cpp (150067 => 150068)


--- trunk/Source/WebKit2/Platform/win/WorkQueueWin.cpp	2013-05-14 12:51:59 UTC (rev 150067)
+++ trunk/Source/WebKit2/Platform/win/WorkQueueWin.cpp	2013-05-14 12:54:06 UTC (rev 150068)
@@ -227,8 +227,10 @@
     MutexLocker lock(timerContext->timerMutex);
     ASSERT(timerContext->timer);
     ASSERT(timerContext->queue->m_timerQueue);
-    if (!::DeleteTimerQueueTimer(timerContext->queue->m_timerQueue, timerContext->timer, 0))
-        ASSERT_WITH_MESSAGE(false, "::DeleteTimerQueueTimer failed with error %lu", ::GetLastError());
+    if (!::DeleteTimerQueueTimer(timerContext->queue->m_timerQueue, timerContext->timer, 0)) {
+        // Getting ERROR_IO_PENDING here means that the timer will be destroyed once the callback is done executing.
+        ASSERT_WITH_MESSAGE(::GetLastError() == ERROR_IO_PENDING, "::DeleteTimerQueueTimer failed with error %lu", ::GetLastError());
+    }
 }
 
 void WorkQueue::dispatchAfterDelay(const Function<void()>& function, double delay)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to