aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-request.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-12-05 21:19:04 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-12-08 03:01:04 +0800
commit91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8 (patch)
tree1c06f36fa153eee0779cdfa1be1a24f62e93787d /mail/e-mail-request.c
parent2f0d83cf74b94d5e6272c07179df6e6c7a929789 (diff)
downloadgsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.gz
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.bz2
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.lz
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.xz
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.tar.zst
gsoc2013-evolution-91822b42dc7b5eb64cad2626f9fc620a2ee6a2c8.zip
Make EMailPartList thread-safe.
Exposing data members in the public struct is unwise, especially when EMailPartList is used from multiple threads. Instead keep the members private and provide a set of thread-safe functions to manipulate them.
Diffstat (limited to 'mail/e-mail-request.c')
-rw-r--r--mail/e-mail-request.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/mail/e-mail-request.c b/mail/e-mail-request.c
index b07b5f0c49..665711f927 100644
--- a/mail/e-mail-request.c
+++ b/mail/e-mail-request.c
@@ -116,7 +116,7 @@ handle_mail_request (GSimpleAsyncResult *res,
const gchar *mime_type;
/* original part_id is owned by the GHashTable */
part_id = soup_uri_decode (part_id);
- part = e_mail_part_list_find_part (part_list, part_id);
+ part = e_mail_part_list_ref_part (part_list, part_id);
val = g_hash_table_lookup (request->priv->uri_query, "mime_type");
if (val) {
@@ -129,10 +129,11 @@ handle_mail_request (GSimpleAsyncResult *res,
mime_type = "application/vnd.evolution.source";
}
- if (part) {
+ if (part != NULL) {
e_mail_formatter_format_as (
formatter, &context, part, request->priv->output_stream,
mime_type ? mime_type : part->mime_type, cancellable);
+ e_mail_part_unref (part);
} else {
g_warning ("Failed to lookup requested part '%s' - this should not happen!", part_id);
}