diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2001-09-05 06:57:18 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2001-09-05 06:57:18 +0800 |
commit | fef8a881026a6dac9e73a5b7d928811b66e77495 (patch) | |
tree | 1d0a851e74ac4b5e7b14c4c72c3db3af55b1e749 | |
parent | 792ed138bd8912ce3ae9c26f0fdb380a1c129d95 (diff) | |
download | gsoc2013-evolution-fef8a881026a6dac9e73a5b7d928811b66e77495.tar.gz gsoc2013-evolution-fef8a881026a6dac9e73a5b7d928811b66e77495.tar.zst gsoc2013-evolution-fef8a881026a6dac9e73a5b7d928811b66e77495.zip |
Just ignore the request if the activity handler has the
* e-activity-handler.c (impl_operationProgressing): Just ignore
the request if the activity handler has the GTK_OBJECT_DESTROYED()
flag set. This should prevent crashes like #7542 and friends when
the components are not well-behaved enough to respect the Bonobo
refcounting.
(impl_operationStarted): Likewise.
(impl_operationFinished): Likewise.
(impl_requestDialog): Likewise.
svn path=/trunk/; revision=12609
-rw-r--r-- | shell/ChangeLog | 11 | ||||
-rw-r--r-- | shell/e-activity-handler.c | 19 |
2 files changed, 30 insertions, 0 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 18ffd79923..1631f2e74a 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,14 @@ +2001-09-04 Ettore Perazzoli <ettore@ximian.com> + + * e-activity-handler.c (impl_operationProgressing): Just ignore + the request if the activity handler has the GTK_OBJECT_DESTROYED() + flag set. This should prevent crashes like #7542 and friends when + the components are not well-behaved enough to respect the Bonobo + refcounting. + (impl_operationStarted): Likewise. + (impl_operationFinished): Likewise. + (impl_requestDialog): Likewise. + 2001-09-04 Iain Holmes <iain@ximian.com> * e-shell-importer.c (start_import): Check the file exists before trying diff --git a/shell/e-activity-handler.c b/shell/e-activity-handler.c index 8624f4f077..798eef551e 100644 --- a/shell/e-activity-handler.c +++ b/shell/e-activity-handler.c @@ -385,6 +385,10 @@ impl_operationStarted (PortableServer_Servant servant, GSList *p; activity_handler = E_ACTIVITY_HANDLER (bonobo_object_from_servant (servant)); + + if (GTK_OBJECT_DESTROYED (activity_handler)) + return; + priv = activity_handler->priv; if (icon->_length == 0) { @@ -430,6 +434,10 @@ impl_operationProgressing (PortableServer_Servant servant, /* FIXME? The complexity in this function sucks. */ activity_handler = E_ACTIVITY_HANDLER (bonobo_object_from_servant (servant)); + + if (GTK_OBJECT_DESTROYED (activity_handler)) + return; + priv = activity_handler->priv; p = lookup_activity (priv->activity_infos, activity_id, &order_number); @@ -469,6 +477,10 @@ impl_operationFinished (PortableServer_Servant servant, int order_number; activity_handler = E_ACTIVITY_HANDLER (bonobo_object_from_servant (servant)); + + if (GTK_OBJECT_DESTROYED (activity_handler)) + return; + priv = activity_handler->priv; p = lookup_activity (priv->activity_infos, activity_id, &order_number); @@ -490,6 +502,13 @@ impl_requestDialog (PortableServer_Servant servant, const GNOME_Evolution_Activity_DialogType dialog_type, CORBA_Environment *ev) { + EActivityHandler *activity_handler; + + activity_handler = E_ACTIVITY_HANDLER (bonobo_object_from_servant (servant)); + + if (GTK_OBJECT_DESTROYED (activity_handler)) + return; + /* FIXME implement. */ g_warning ("Evolution::Activity::requestDialog not implemented"); |