aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog10
-rw-r--r--shell/evolution-shell-component.c12
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);