aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2008-06-24 16:01:04 +0800
committerMilan Crha <mcrha@src.gnome.org>2008-06-24 16:01:04 +0800
commit9955814a761a6365a57b66284f6c5682192f17cd (patch)
tree48360b8c930714b3a74a95cc1518c9ea947cccf6
parent94c938bb6d9857f2887d731f73cf8653df58bc80 (diff)
downloadgsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.tar
gsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.tar.gz
gsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.tar.bz2
gsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.tar.lz
gsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.tar.xz
gsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.tar.zst
gsoc2013-evolution-9955814a761a6365a57b66284f6c5682192f17cd.zip
** Fix for bug #537275
2008-06-24 Milan Crha <mcrha@redhat.com> ** Fix for bug #537275 * em-html-stream.c: (emhs_cleanup): Close GtkHTMLStream on cancel. * em-html-stream.c: (emhs_gtkhtml_destroy): Set the cancel. * em-sync-stream.c: (emss_process_message): Do not pass data to the child structure if we were canceled. svn path=/trunk/; revision=35680
-rw-r--r--mail/ChangeLog9
-rw-r--r--mail/em-html-stream.c3
-rw-r--r--mail/em-sync-stream.c7
3 files changed, 19 insertions, 0 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 5622614a23..750355286a 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,12 @@
+2008-06-24 Milan Crha <mcrha@redhat.com>
+
+ ** Fix for bug #537275
+
+ * em-html-stream.c: (emhs_cleanup): Close GtkHTMLStream on cancel.
+ * em-html-stream.c: (emhs_gtkhtml_destroy): Set the cancel.
+ * em-sync-stream.c: (emss_process_message):
+ Do not pass data to the child structure if we were canceled.
+
2008-06-21 Paul Bolle <pebolle@tiscali.nl>
** Fix for bug #539268
diff --git a/mail/em-html-stream.c b/mail/em-html-stream.c
index 656f736969..2644afcf3d 100644
--- a/mail/em-html-stream.c
+++ b/mail/em-html-stream.c
@@ -80,6 +80,8 @@ em_html_stream_init (CamelObject *object)
static void
emhs_cleanup(EMHTMLStream *emhs)
{
+ if (emhs->sync.cancel && emhs->html_stream)
+ gtk_html_stream_close (emhs->html_stream, GTK_HTML_STREAM_ERROR);
emhs->html_stream = NULL;
emhs->sync.cancel = TRUE;
g_signal_handler_disconnect(emhs->html, emhs->destroy_id);
@@ -147,6 +149,7 @@ static void
emhs_gtkhtml_destroy(struct _GtkHTML *html, EMHTMLStream *emhs)
{
d(printf("%p: emhs gtkhtml destroy\n", emhs));
+ emhs->sync.cancel = TRUE;
emhs_cleanup(emhs);
}
diff --git a/mail/em-sync-stream.c b/mail/em-sync-stream.c
index e8aad7f31c..82c8b20aeb 100644
--- a/mail/em-sync-stream.c
+++ b/mail/em-sync-stream.c
@@ -59,6 +59,13 @@ emss_process_message (struct _write_msg *msg)
{
struct _EMSyncStream *emss = msg->emss;
+ if (emss->cancel) {
+ /* Do not pass data to the child if we are canceled. */
+ e_flag_set (msg->done);
+
+ return FALSE;
+ }
+
/* Force out any pending data before doing anything else. */
if (emss->buffer != NULL && emss->buffer->len > 0) {
EMSS_CLASS (emss)->sync_write (