aboutsummaryrefslogtreecommitdiffstats
path: root/shell/evolution-shell-component.c
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 /shell/evolution-shell-component.c
parentd16418158d22a039e2a9a9665a5b337aed5f510a (diff)
downloadgsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar
gsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar.gz
gsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar.bz2
gsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar.lz
gsoc2013-evolution-a2f5e5b0f45429e42c7723b7d65dcec344b43e29.tar.xz
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
Diffstat (limited to 'shell/evolution-shell-component.c')
-rw-r--r--shell/evolution-shell-component.c12
1 files changed, 8 insertions, 4 deletions
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);