aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2014-03-11 00:45:17 +0800
committerMatthew Barnes <mbarnes@redhat.com>2014-03-11 00:45:17 +0800
commit130b1b00ece4ec57b8d0fcfcee1bdf508d709736 (patch)
tree1d571c4231cefb646f8175da3da8e1081a8c6552
parent23b50a0b990d78781c1064c79fbca69b432e95da (diff)
downloadgsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.tar
gsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.tar.gz
gsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.tar.bz2
gsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.tar.lz
gsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.tar.xz
gsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.tar.zst
gsoc2013-evolution-130b1b00ece4ec57b8d0fcfcee1bdf508d709736.zip
Don't close base stream when destroying a CamelFilterOutputStream.
GFilterOutputStream, from which CamelFilterOutputStream is derived, defaults to closing its base stream when the instance is finalized. That makes sense in the general case, but CamelFilterOutputStreams are usually temporary wrappers on a more permanent base stream, so we need to remember to override the default "close-base-stream" property value. I was tempted to just make CamelFilterOutputStream override the default automatically, but I decided against it because my long term plan is to drop CamelFilterOutputStream for GConverterOutputStream which also does not override the "close-base-stream" default. The closer the semantics of the two classes match, the easier porting will be in the future.
-rw-r--r--em-format/e-mail-formatter-error.c2
-rw-r--r--em-format/e-mail-formatter-quote-text-enriched.c2
-rw-r--r--em-format/e-mail-formatter-quote-text-html.c2
-rw-r--r--em-format/e-mail-formatter-quote-text-plain.c4
-rw-r--r--em-format/e-mail-formatter-source.c2
-rw-r--r--em-format/e-mail-formatter-text-enriched.c2
-rw-r--r--em-format/e-mail-formatter-text-plain.c2
-rw-r--r--em-format/e-mail-formatter.c4
8 files changed, 20 insertions, 0 deletions
diff --git a/em-format/e-mail-formatter-error.c b/em-format/e-mail-formatter-error.c
index 117fcd6e03..10993d79e3 100644
--- a/em-format/e-mail-formatter-error.c
+++ b/em-format/e-mail-formatter-error.c
@@ -78,6 +78,8 @@ emfe_error_format (EMailFormatterExtension *extension,
CAMEL_MIME_FILTER_TOHTML_CONVERT_NL |
CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0);
filtered_stream = camel_filter_output_stream_new (stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (filtered_stream), FALSE);
g_object_unref (filter);
camel_data_wrapper_decode_to_output_stream_sync (
diff --git a/em-format/e-mail-formatter-quote-text-enriched.c b/em-format/e-mail-formatter-quote-text-enriched.c
index 390bbd6883..679ab7c4b6 100644
--- a/em-format/e-mail-formatter-quote-text-enriched.c
+++ b/em-format/e-mail-formatter-quote-text-enriched.c
@@ -75,6 +75,8 @@ emqfe_text_enriched_format (EMailFormatterExtension *extension,
filter = camel_mime_filter_enriched_new (camel_flags);
filtered_stream = camel_filter_output_stream_new (stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (filtered_stream), FALSE);
g_object_unref (filter);
e_mail_formatter_format_text (
diff --git a/em-format/e-mail-formatter-quote-text-html.c b/em-format/e-mail-formatter-quote-text-html.c
index 5ae94f7313..f6a47a9ab2 100644
--- a/em-format/e-mail-formatter-quote-text-html.c
+++ b/em-format/e-mail-formatter-quote-text-html.c
@@ -72,6 +72,8 @@ emqfe_text_html_format (EMailFormatterExtension *extension,
filter = e_mail_stripsig_filter_new (FALSE);
temp_stream = camel_filter_output_stream_new (
filtered_stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (temp_stream), FALSE);
g_object_unref (filtered_stream);
filtered_stream = temp_stream;
g_object_unref (filter);
diff --git a/em-format/e-mail-formatter-quote-text-plain.c b/em-format/e-mail-formatter-quote-text-plain.c
index d53cc53ca8..318762c125 100644
--- a/em-format/e-mail-formatter-quote-text-plain.c
+++ b/em-format/e-mail-formatter-quote-text-plain.c
@@ -89,6 +89,8 @@ emqfe_text_plain_format (EMailFormatterExtension *extension,
filter = e_mail_stripsig_filter_new (TRUE);
temp_stream = camel_filter_output_stream_new (
filtered_stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (temp_stream), FALSE);
g_object_unref (filtered_stream);
filtered_stream = temp_stream;
g_object_unref (filter);
@@ -96,6 +98,8 @@ emqfe_text_plain_format (EMailFormatterExtension *extension,
filter = camel_mime_filter_tohtml_new (text_flags, rgb);
temp_stream = camel_filter_output_stream_new (filtered_stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (temp_stream), FALSE);
g_object_unref (filtered_stream);
filtered_stream = temp_stream;
g_object_unref (filter);
diff --git a/em-format/e-mail-formatter-source.c b/em-format/e-mail-formatter-source.c
index 4c80114bb2..ed7304fab5 100644
--- a/em-format/e-mail-formatter-source.c
+++ b/em-format/e-mail-formatter-source.c
@@ -85,6 +85,8 @@ emfe_source_format (EMailFormatterExtension *extension,
CAMEL_MIME_FILTER_TOHTML_CONVERT_SPACES |
CAMEL_MIME_FILTER_TOHTML_PRESERVE_8BIT, 0);
filtered_stream = camel_filter_output_stream_new (stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (filtered_stream), FALSE);
g_object_unref (filter);
camel_data_wrapper_write_to_output_stream_sync (
diff --git a/em-format/e-mail-formatter-text-enriched.c b/em-format/e-mail-formatter-text-enriched.c
index 8e522236a2..e9fccd72be 100644
--- a/em-format/e-mail-formatter-text-enriched.c
+++ b/em-format/e-mail-formatter-text-enriched.c
@@ -66,6 +66,8 @@ emfe_text_enriched_format (EMailFormatterExtension *extension,
filter = camel_mime_filter_enriched_new (filter_flags);
filtered_stream = camel_filter_output_stream_new (stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (filtered_stream), FALSE);
g_object_unref (filter);
string =
diff --git a/em-format/e-mail-formatter-text-plain.c b/em-format/e-mail-formatter-text-plain.c
index c759a0a375..373ffdf826 100644
--- a/em-format/e-mail-formatter-text-plain.c
+++ b/em-format/e-mail-formatter-text-plain.c
@@ -105,6 +105,8 @@ emfe_text_plain_format (EMailFormatterExtension *extension,
filter = camel_mime_filter_tohtml_new (flags, rgb);
filtered_stream =
camel_filter_output_stream_new (stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (filtered_stream), FALSE);
g_object_unref (filter);
string =
diff --git a/em-format/e-mail-formatter.c b/em-format/e-mail-formatter.c
index 374f2213aa..2efe8ebd8c 100644
--- a/em-format/e-mail-formatter.c
+++ b/em-format/e-mail-formatter.c
@@ -1065,6 +1065,8 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
windows = camel_mime_filter_windows_new (charset);
filter_stream = camel_filter_output_stream_new (
null_stream, windows);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (filter_stream), FALSE);
camel_data_wrapper_decode_to_output_stream_sync (
CAMEL_DATA_WRAPPER (mime_part),
@@ -1083,6 +1085,8 @@ e_mail_formatter_format_text (EMailFormatter *formatter,
filter = camel_mime_filter_charset_new (charset, "UTF-8");
if (filter != NULL) {
stream = camel_filter_output_stream_new (stream, filter);
+ g_filter_output_stream_set_close_base_stream (
+ G_FILTER_OUTPUT_STREAM (stream), FALSE);
g_object_unref (filter);
} else {
g_object_ref (stream);