aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog10
-rw-r--r--shell/e-shell-offline-handler.c8
2 files changed, 14 insertions, 4 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index cb86b14e55..37c4a470d5 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,13 @@
+2005-01-21 JP Rosevear <jpr@novell.com>
+
+ * e-shell-offline-handler.c
+ (impl_OfflineProgressListener_updateProgress): mark priv->finished
+ as true first so we don't access freed memory if we get finalized
+ during the signal emmission
+ (cancel_offline): ditto
+ (finalize_offline): ditto
+ (e_shell_offline_handler_put_components_offline): ditto
+
2005-01-20 Mengjie Yu <meng-jie.yu@sun.com>
* e-shell-importer.c: (import_druid_esc),
diff --git a/shell/e-shell-offline-handler.c b/shell/e-shell-offline-handler.c
index 6e6350b140..950aa71956 100644
--- a/shell/e-shell-offline-handler.c
+++ b/shell/e-shell-offline-handler.c
@@ -212,8 +212,8 @@ impl_OfflineProgressListener_updateProgress (PortableServer_Servant servant,
update_dialog_clist (offline_handler);
if (priv->num_total_connections == 0 && ! priv->finished) {
- g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, TRUE);
priv->finished = TRUE;
+ g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, TRUE);
}
}
@@ -384,8 +384,8 @@ cancel_offline (EShellOfflineHandler *offline_handler)
priv->num_total_connections = 0;
if (! priv->finished) {
- g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, FALSE);
priv->finished = TRUE;
+ g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, FALSE);
}
}
@@ -511,8 +511,8 @@ finalize_offline (EShellOfflineHandler *offline_handler)
if (priv->num_total_connections == 0 && ! priv->finished) {
/* Nothing else to do, we are all set. */
- g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, TRUE);
priv->finished = TRUE;
+ g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, TRUE);
}
g_object_unref (offline_handler);
@@ -846,8 +846,8 @@ e_shell_offline_handler_put_components_offline (EShellOfflineHandler *offline_ha
if (! prepare_for_offline (offline_handler)) {
/* FIXME: Maybe do something smarter here. */
g_warning ("Couldn't put components off-line");
- g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, FALSE);
priv->finished = TRUE;
+ g_signal_emit (offline_handler, signals[OFFLINE_PROCEDURE_FINISHED], 0, FALSE);
g_object_unref (offline_handler);
return;
}