ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #03382
[Merge] lp:~mterry/appmenu-gtk/fix-timeout-crash into lp:appmenu-gtk
Michael Terry has proposed merging lp:~mterry/appmenu-gtk/fix-timeout-crash into lp:appmenu-gtk.
Requested reviews:
Canonical Desktop Experience Team (canonical-dx-team)
Related bugs:
#726388 crashes with SIGSEGV in do_rebuild() when running under valgrind
https://bugs.launchpad.net/bugs/726388
For more details, see:
https://code.launchpad.net/~mterry/appmenu-gtk/fix-timeout-crash/+merge/52239
This fixes a crash under valgrind apparently due to a toplevel dying before we can get to it. I couldn't reproduce, but seb128 could and he confirmed this fixes it.
--
https://code.launchpad.net/~mterry/appmenu-gtk/fix-timeout-crash/+merge/52239
Your team ayatana-commits is subscribed to branch lp:appmenu-gtk.
=== modified file 'src/bridge.c'
--- src/bridge.c 2011-03-03 17:19:12 +0000
+++ src/bridge.c 2011-03-04 18:33:23 +0000
@@ -463,14 +463,15 @@
static gboolean
do_rebuild (RebuildData *data)
{
- if (gtk_widget_is_toplevel (data->widget))
+ if (data->widget != NULL && gtk_widget_is_toplevel (data->widget))
{
rebuild_window_items (data->bridge,
data->widget);
- g_hash_table_remove (rebuild_ids, data->widget);
+ g_object_remove_weak_pointer (G_OBJECT (data->widget), (gpointer*)&data->widget);
}
+ g_hash_table_remove (rebuild_ids, data->widget);
g_free (data);
return FALSE;
@@ -502,6 +503,8 @@
(GSourceFunc)do_rebuild,
data);
+ g_object_add_weak_pointer (G_OBJECT (data->widget), (gpointer*)&data->widget);
+
if (rebuild_ids == NULL)
{
rebuild_ids = g_hash_table_new (g_direct_hash, g_direct_equal);
Follow ups