From a2f5e5b0f45429e42c7723b7d65dcec344b43e29 Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Sun, 28 Oct 2001 22:30:59 +0000 Subject: [The following should fix #13802, crash on exit.] * evolution-shell-component.c (impl_unsetOwner): Set the ping timeout ID to -1 when removing the source. (impl_destroy): Likewise. (impl_unsetOwner): Remove the timeout before unreffing, not after unreffing. svn path=/trunk/; revision=14304 --- shell/ChangeLog | 10 ++++++++++ shell/evolution-shell-component.c | 12 ++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/shell/ChangeLog b/shell/ChangeLog index 685ca245e7..53913b6a51 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,13 @@ +2001-10-28 Ettore Perazzoli + + [The following should fix #13802, crash on exit.] + + * evolution-shell-component.c (impl_unsetOwner): Set the ping + timeout ID to -1 when removing the source. + (impl_destroy): Likewise. + (impl_unsetOwner): Remove the timeout before unreffing, not after + unreffing. + 2001-10-28 Jon Trowbridge * e-shell-about-box.c: Distribute credit equally. diff --git a/shell/evolution-shell-component.c b/shell/evolution-shell-component.c index dc27a951c9..2063be04f7 100644 --- a/shell/evolution-shell-component.c +++ b/shell/evolution-shell-component.c @@ -407,12 +407,14 @@ impl_unsetOwner (PortableServer_Servant servant, return; } + if (priv->ping_timeout_id != -1) { + g_source_remove (priv->ping_timeout_id); + priv->ping_timeout_id = -1; + } + bonobo_object_unref (BONOBO_OBJECT (priv->owner_client)); priv->owner_client = NULL; - if (priv->ping_timeout_id != -1) - g_source_remove (priv->ping_timeout_id); - gtk_signal_emit (GTK_OBJECT (shell_component), signals[OWNER_UNSET]); } @@ -653,8 +655,10 @@ destroy (GtkObject *object) priv = shell_component->priv; - if (priv->ping_timeout_id != -1) + if (priv->ping_timeout_id != -1) { g_source_remove (priv->ping_timeout_id); + priv->ping_timeout_id = -1; + } CORBA_exception_init (&ev); -- cgit v1.2.3