diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ChangeLog | 10 | ||||
-rw-r--r-- | 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 <ettore@ximian.com> + + [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 <trow@ximian.com> * 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); |