[GTK] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) when...
authormcatanzaro@igalia.com <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 Jun 2018 15:35:42 +0000 (15:35 +0000)
committermcatanzaro@igalia.com <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 Jun 2018 15:35:42 +0000 (15:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=175602

Reviewed by Carlos Garcia Campos.

We check using the GdkDragContext to ensure the DroppingContext is still alive (present in
m_droppingContexts), but access it via the pointer to the DroppingContext that could be
dangling. This happens on every drag. I can't actually reproduce the original assertion
since I'm currently working with an asan build, but I imagine it's probably the same issue
that I'm fixing here.

* UIProcess/gtk/DragAndDropHandler.cpp:
(WebKit::DragAndDropHandler::dragLeave):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233305 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/UIProcess/gtk/DragAndDropHandler.cpp

index 01562f7..c863b2e 100644 (file)
@@ -1,3 +1,19 @@
+2018-06-28  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        [GTK] ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key) when dragging file into webview
+        https://bugs.webkit.org/show_bug.cgi?id=175602
+
+        Reviewed by Carlos Garcia Campos.
+
+        We check using the GdkDragContext to ensure the DroppingContext is still alive (present in
+        m_droppingContexts), but access it via the pointer to the DroppingContext that could be
+        dangling. This happens on every drag. I can't actually reproduce the original assertion
+        since I'm currently working with an asan build, but I imagine it's probably the same issue
+        that I'm fixing here.
+
+        * UIProcess/gtk/DragAndDropHandler.cpp:
+        (WebKit::DragAndDropHandler::dragLeave):
+
 2018-06-27  Timothy Hatcher  <timothy@apple.com>
 
         Don't expose new semantic -apple-system color keywords on iOS.
index 2a22358..75a1bb6 100644 (file)
@@ -257,8 +257,8 @@ void DragAndDropHandler::dragLeave(GdkDragContext* context)
     // During a drop GTK+ will fire a drag-leave signal right before firing
     // the drag-drop signal. We want the actions for drag-leave to happen after
     // those for drag-drop, so schedule them to happen asynchronously here.
-    RunLoop::main().dispatch([this, droppingContext]() {
-        auto it = m_droppingContexts.find(droppingContext->gdkContext);
+    RunLoop::main().dispatch([this, context, droppingContext]() {
+        auto it = m_droppingContexts.find(context);
         if (it == m_droppingContexts.end())
             return;