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
This commit is contained in:
Ettore Perazzoli
2001-09-04 22:57:18 +00:00
parent 792ed138bd
commit fef8a88102
2 changed files with 30 additions and 0 deletions

View File

@ -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

View File

@ -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");