aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2001-09-05 06:57:18 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2001-09-05 06:57:18 +0800
commitfef8a881026a6dac9e73a5b7d928811b66e77495 (patch)
tree1d0a851e74ac4b5e7b14c4c72c3db3af55b1e749
parent792ed138bd8912ce3ae9c26f0fdb380a1c129d95 (diff)
downloadgsoc2013-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/ChangeLog11
-rw-r--r--shell/e-activity-handler.c19
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");