From e465b4cb2d7affb945930903c70e2cf54d0e9d56 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sat, 5 Nov 2016 17:52:21 -0700 Subject: [PATCH] Avoid using deleted widget in idle callback Use a slightly higher idle priority so callback runs before TLW is deleted, and ref the widget just to make sure it doesn't disappear. Problem was introduced in 0388ce8e25535415d9bdd79ce14eb20e73859279 (backport of 9c3900e40d7709af9f7764c81334eb24d087290e, which modified 9dc7a89ccdf20672f890cb2a576c319fb7db57b5, which wasn't backported) --- src/gtk/toplevel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 42755f40ca..b01f9d076c 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -1193,6 +1193,7 @@ extern "C" { static gboolean reset_size_request(void* data) { gtk_widget_set_size_request(GTK_WIDGET(data), -1, -1); + g_object_unref(data); return false; } } @@ -1221,7 +1222,8 @@ void wxTopLevelWindowGTK::DoSetClientSize(int width, int height) { gtk_widget_set_size_request(m_wxwindow, m_clientWidth, m_clientHeight); // Cancel size request at next idle to allow resizing - g_idle_add_full(G_PRIORITY_LOW, reset_size_request, m_wxwindow, NULL); + g_idle_add_full(G_PRIORITY_LOW - 1, reset_size_request, m_wxwindow, NULL); + g_object_ref(m_wxwindow); } } }