[GTK] MiniBrowser: valgrind claims 'Invalid write of size 8' on close
https://bugs.webkit.org/show_bug.cgi?id=209471

Reviewed by Adrian Perez de Castro.

This is because we need to remove the weak pointer added in child windows to their parent.

* MiniBrowser/gtk/BrowserWindow.c:
(browserWindowDispose): Remove the parentWindow weak ref.
(browser_window_class_init): Add dispose.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@259339 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index 79a1e60..082da68 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,16 @@
+2020-04-01  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] MiniBrowser: valgrind claims 'Invalid write of size 8' on close
+        https://bugs.webkit.org/show_bug.cgi?id=209471
+
+        Reviewed by Adrian Perez de Castro.
+
+        This is because we need to remove the weak pointer added in child windows to their parent.
+
+        * MiniBrowser/gtk/BrowserWindow.c:
+        (browserWindowDispose): Remove the parentWindow weak ref.
+        (browser_window_class_init): Add dispose.
+
 2020-03-31  Kate Cheney  <katherine_cheney@apple.com>
 
         Requests for messageHandlers() in the DOMWindow should be ignored for non-app-bound navigations
diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c
index 37f9eef..21c3c3d 100644
--- a/Tools/MiniBrowser/gtk/BrowserWindow.c
+++ b/Tools/MiniBrowser/gtk/BrowserWindow.c
@@ -711,6 +711,18 @@
         gtk_main_quit();
 }
 
+static void browserWindowDispose(GObject *gObject)
+{
+    BrowserWindow *window = BROWSER_WINDOW(gObject);
+
+    if (window->parentWindow) {
+        g_object_remove_weak_pointer(G_OBJECT(window->parentWindow), (gpointer *)&window->parentWindow);
+        window->parentWindow = NULL;
+    }
+
+    G_OBJECT_CLASS(browser_window_parent_class)->dispose(gObject);
+}
+
 static void browserWindowSetupEditorToolbar(BrowserWindow *window)
 {
     GtkWidget *toolbar = gtk_toolbar_new();
@@ -1126,6 +1138,7 @@
     GObjectClass *gobjectClass = G_OBJECT_CLASS(klass);
 
     gobjectClass->constructed = browserWindowConstructed;
+    gobjectClass->dispose = browserWindowDispose;
     gobjectClass->finalize = browserWindowFinalize;
 
     GtkWidgetClass *widgetClass = GTK_WIDGET_CLASS(klass);