[GTK] Crash in WebCore::SelectionRangeData::apply
authormcatanzaro@igalia.com <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Oct 2017 07:04:51 +0000 (07:04 +0000)
committermcatanzaro@igalia.com <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Oct 2017 07:04:51 +0000 (07:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=177808

Reviewed by Carlos Garcia Campos.

The problem appears to be a name collision between WebCore::SelectionData and
WebCore::SelectionData. Yes, those are the same names. It seems the destructor for a
Source/WebCore/platform/gtk/SelectionData.h SelectionData is being called on a
Source/WebCore/rendering/SelectionRangeData.cpp SelectionData. Yikes. Can you forgive the
poor linker for not being magic?

This fixes crashes in approximately one bajillion tests.

* rendering/SelectionRangeData.cpp: Move SelectionData into an anonymous namespace.

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

Source/WebCore/ChangeLog
Source/WebCore/rendering/SelectionRangeData.cpp

index e23a511..cf37a0a 100644 (file)
@@ -1,3 +1,20 @@
+2017-10-27  Michael Catanzaro  <mcatanzaro@igalia.com>
+
+        [GTK] Crash in WebCore::SelectionRangeData::apply
+        https://bugs.webkit.org/show_bug.cgi?id=177808
+
+        Reviewed by Carlos Garcia Campos.
+
+        The problem appears to be a name collision between WebCore::SelectionData and
+        WebCore::SelectionData. Yes, those are the same names. It seems the destructor for a
+        Source/WebCore/platform/gtk/SelectionData.h SelectionData is being called on a
+        Source/WebCore/rendering/SelectionRangeData.cpp SelectionData. Yikes. Can you forgive the
+        poor linker for not being magic?
+
+        This fixes crashes in approximately one bajillion tests.
+
+        * rendering/SelectionRangeData.cpp: Move SelectionData into an anonymous namespace.
+
 2017-10-26  Basuke Suzuki  <Basuke.Suzuki@sony.com>
 
         [WinCairo] Fix build after WebCore moves to unified source.
 2017-10-26  Basuke Suzuki  <Basuke.Suzuki@sony.com>
 
         [WinCairo] Fix build after WebCore moves to unified source.
index a38adcd..aacf5e8 100644 (file)
@@ -42,7 +42,9 @@
 #include "VisibleSelection.h"
 
 namespace WebCore {
 #include "VisibleSelection.h"
 
 namespace WebCore {
-    
+
+namespace { // See bug #177808.
+
 struct SelectionData {
     using RendererMap = HashMap<RenderObject*, std::unique_ptr<RenderSelectionInfo>>;
     using RenderBlockMap = HashMap<const RenderBlock*, std::unique_ptr<RenderBlockSelectionInfo>>;
 struct SelectionData {
     using RendererMap = HashMap<RenderObject*, std::unique_ptr<RenderSelectionInfo>>;
     using RenderBlockMap = HashMap<const RenderBlock*, std::unique_ptr<RenderBlockSelectionInfo>>;
@@ -94,6 +96,8 @@ private:
     Vector<RenderMultiColumnSpannerPlaceholder*> m_spannerStack;
 };
 
     Vector<RenderMultiColumnSpannerPlaceholder*> m_spannerStack;
 };
 
+} // anonymous namespace
+
 static RenderObject* rendererAfterPosition(const RenderObject& renderer, unsigned offset)
 {
     auto* child = renderer.childAt(offset);
 static RenderObject* rendererAfterPosition(const RenderObject& renderer, unsigned offset)
 {
     auto* child = renderer.childAt(offset);