From c72aba8f7c13cdc68b1f3dbc1d381be45e0c4cb8 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 5 Jul 2011 08:16:13 -0400 Subject: Prefer g_seekable_seek() over camel_stream_reset(). When a stream is obviously a file or memory stream (both of which implement the GSeekable interface), use g_seekable_seek() instead of camel_stream_reset(). This is helping me discover if it's safe to remove camel_stream_reset(). We want to eventually move to GIO streams, which have no reset method. --- mail/e-mail-folder-utils.c | 22 +++++++++++++--------- mail/em-composer-utils.c | 1 - 2 files changed, 13 insertions(+), 10 deletions(-) (limited to 'mail') diff --git a/mail/e-mail-folder-utils.c b/mail/e-mail-folder-utils.c index f255c730b6..64bdbdb821 100644 --- a/mail/e-mail-folder-utils.c +++ b/mail/e-mail-folder-utils.c @@ -1159,9 +1159,7 @@ e_mail_folder_save_messages_sync (CamelFolder *folder, { GFileOutputStream *file_output_stream; GByteArray *byte_array; - CamelMimeFilter *filter; CamelStream *base_stream; - CamelStream *stream; gboolean success = TRUE; guint ii; @@ -1192,15 +1190,12 @@ e_mail_folder_save_messages_sync (CamelFolder *folder, /* CamelStreamMem takes ownership of the GByteArray. */ byte_array = g_byte_array_new (); - filter = camel_mime_filter_from_new (); base_stream = camel_stream_mem_new_with_byte_array (byte_array); - stream = camel_stream_filter_new (base_stream); - camel_stream_filter_add (CAMEL_STREAM_FILTER (stream), filter); - g_object_unref (base_stream); - g_object_unref (filter); for (ii = 0; ii < message_uids->len; ii++) { CamelMimeMessage *message; + CamelMimeFilter *filter; + CamelStream *stream; const gchar *uid; gchar *from_line; gint percent; @@ -1232,10 +1227,17 @@ e_mail_folder_save_messages_sync (CamelFolder *folder, goto exit; } + filter = camel_mime_filter_from_new (); + stream = camel_stream_filter_new (base_stream); + camel_stream_filter_add (CAMEL_STREAM_FILTER (stream), filter); + retval = camel_data_wrapper_write_to_stream_sync ( CAMEL_DATA_WRAPPER (message), stream, cancellable, error); + g_object_unref (filter); + g_object_unref (stream); + if (retval == -1) { g_object_unref (message); goto exit; @@ -1258,14 +1260,16 @@ e_mail_folder_save_messages_sync (CamelFolder *folder, /* Flush the buffer for the next message. * For memory streams this never fails. */ - camel_stream_reset (stream, NULL); + g_seekable_seek ( + G_SEEKABLE (base_stream), + 0, G_SEEK_SET, NULL, NULL); g_object_unref (message); } exit: g_object_unref (file_output_stream); - g_object_unref (stream); + g_object_unref (base_stream); camel_operation_pop_message (cancellable); diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 2dcc6872af..c3b5465015 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1153,7 +1153,6 @@ traverse_parts (GSList *clues, CamelMimeMessage *message, CamelDataWrapper *cont if (replace_variables (clues, message, &str)) { stream = camel_stream_mem_new_with_buffer (str, strlen (str)); - camel_stream_reset (stream, NULL); camel_data_wrapper_construct_from_stream_sync ( content, stream, NULL, NULL); g_object_unref (stream); -- cgit