Title: [152530] trunk/Tools
- Revision
- 152530
- Author
- [email protected]
- Date
- 2013-07-10 01:41:14 -0700 (Wed, 10 Jul 2013)
Log Message
[GTK] WebKitTestRunner tries to remove an already deleted event in EventSenderProxy::replaySavedEvents
https://bugs.webkit.org/show_bug.cgi?id=118509
Patch by Simon Pena <[email protected]> on 2013-07-10
Reviewed by Martin Robinson.
In EventSenderProxy::replaySavedEvents WebKitTestRunner can crash
when trying to remove an event already removed, if another event is
processed in the middle. By using a Deque's takeFirst, we ensure the
element is removed before we dispatch it.
fast/events/mousedown-inside-dragstart-should-not-cause-crash.html no longer
crashes after this fix is added.
* WebKitTestRunner/EventSenderProxy.h: Use a Deque instead of Vector in GTK
* WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
(WTR::EventSenderProxy::replaySavedEvents): Use takeFirst to retrieve the event
from the queue.
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (152529 => 152530)
--- trunk/Tools/ChangeLog 2013-07-10 08:36:13 UTC (rev 152529)
+++ trunk/Tools/ChangeLog 2013-07-10 08:41:14 UTC (rev 152530)
@@ -1,3 +1,23 @@
+2013-07-10 Simon Pena <[email protected]>
+
+ [GTK] WebKitTestRunner tries to remove an already deleted event in EventSenderProxy::replaySavedEvents
+ https://bugs.webkit.org/show_bug.cgi?id=118509
+
+ Reviewed by Martin Robinson.
+
+ In EventSenderProxy::replaySavedEvents WebKitTestRunner can crash
+ when trying to remove an event already removed, if another event is
+ processed in the middle. By using a Deque's takeFirst, we ensure the
+ element is removed before we dispatch it.
+
+ fast/events/mousedown-inside-dragstart-should-not-cause-crash.html no longer
+ crashes after this fix is added.
+
+ * WebKitTestRunner/EventSenderProxy.h: Use a Deque instead of Vector in GTK
+ * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
+ (WTR::EventSenderProxy::replaySavedEvents): Use takeFirst to retrieve the event
+ from the queue.
+
2013-07-09 Ryuan Choi <[email protected]>
[EFL] Add ewk_view_device_pixel_ratio_set
Modified: trunk/Tools/WebKitTestRunner/EventSenderProxy.h (152529 => 152530)
--- trunk/Tools/WebKitTestRunner/EventSenderProxy.h 2013-07-10 08:36:13 UTC (rev 152529)
+++ trunk/Tools/WebKitTestRunner/EventSenderProxy.h 2013-07-10 08:41:14 UTC (rev 152530)
@@ -32,7 +32,7 @@
#include <QTouchEvent>
#elif PLATFORM(GTK)
#include <gdk/gdk.h>
-#include <wtf/Vector.h>
+#include <wtf/Deque.h>
#elif PLATFORM(EFL)
#include <WebKit2/EWebKit2.h>
#include <wtf/Deque.h>
@@ -114,7 +114,7 @@
#if PLATFORM(MAC)
int eventNumber;
#elif PLATFORM(GTK)
- Vector<WTREventQueueItem> m_eventQueue;
+ Deque<WTREventQueueItem> m_eventQueue;
unsigned m_mouseButtonCurrentlyDown;
#elif PLATFORM(QT)
Qt::MouseButtons m_mouseButtons;
Modified: trunk/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp (152529 => 152530)
--- trunk/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp 2013-07-10 08:36:13 UTC (rev 152529)
+++ trunk/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp 2013-07-10 08:41:14 UTC (rev 152530)
@@ -155,12 +155,11 @@
void EventSenderProxy::replaySavedEvents()
{
while (!m_eventQueue.isEmpty()) {
- WTREventQueueItem item = m_eventQueue.first();
+ WTREventQueueItem item = m_eventQueue.takeFirst();
if (item.delay)
g_usleep(item.delay * 1000);
dispatchEvent(item.event);
- m_eventQueue.remove(0);
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes