aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2001-10-29 06:30:59 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2001-10-29 06:30:59 +0800
commita2f5e5b0f45429e42c7723b7d65dcec344b43e29 (patch)
tree1a0f9dc34308e84fc0e663342f8516df3cfde5e7
parentd16418158d22a039e2a9a9665a5b337aed5f510a (diff)
downloadgsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar.gz
gsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar.zst
gsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.zip
[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
-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);