From 4d39841513a3a7f7aa9d38ab97cb9fcc9171e80b Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Thu, 18 Jun 2009 16:42:53 +0200 Subject: [PATCH 1/1] Fix modest_tny_msg_header_get_all_recipients_list (in case from is empty) --- src/modest-text-utils.c | 3 +++ src/modest-tny-msg.c | 49 +++++++++++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/modest-text-utils.c b/src/modest-text-utils.c index deda5e7..2223fd1 100644 --- a/src/modest-text-utils.c +++ b/src/modest-text-utils.c @@ -416,6 +416,9 @@ modest_text_utils_remove_duplicate_addresses (const gchar *address_list) g_slist_foreach (addresses, (GFunc)g_free, NULL); g_slist_free (addresses); + if (new_list == NULL) + new_list = g_strdup (""); + return new_list; } diff --git a/src/modest-tny-msg.c b/src/modest-tny-msg.c index 5b56469..78b4b75 100644 --- a/src/modest-tny-msg.c +++ b/src/modest-tny-msg.c @@ -1254,11 +1254,15 @@ modest_tny_msg_header_get_all_recipients_list (TnyHeader *header) { GSList *recipients = NULL; gchar *from = NULL, *to = NULL, *cc = NULL, *bcc = NULL; - gchar *tmp = NULL, *old_tmp = NULL; + gchar *after_remove; + GString *buffer; + gboolean add_separator = TRUE; if (header == NULL) return NULL; + buffer = g_string_new (""); + from = tny_header_dup_from (header); to = tny_header_dup_to (header); cc = tny_header_dup_cc (header); @@ -1266,32 +1270,39 @@ modest_tny_msg_header_get_all_recipients_list (TnyHeader *header) recipients = NULL; if (from) { - tmp = g_strdup (from); - old_tmp = tmp; - g_free (from); + buffer = g_string_append (buffer, from); + add_separator = TRUE; } if (to) { - tmp = g_strjoin ("; ", old_tmp, to, NULL); - g_free (old_tmp); - old_tmp = tmp; - g_free (to); + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, to); } if (cc) { - tmp = g_strjoin ("; ", old_tmp, cc, NULL); - g_free (old_tmp); - old_tmp = tmp; - g_free (cc); + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, cc); } if (bcc) { - tmp = g_strjoin ("; ", old_tmp, bcc, NULL); - g_free (old_tmp); - old_tmp = tmp; - g_free (bcc); + if (add_separator) + buffer = g_string_append (buffer, "; "); + else + add_separator = TRUE; + + buffer = g_string_append (buffer, bcc); } - old_tmp = modest_text_utils_remove_duplicate_addresses (tmp); - recipients = modest_text_utils_split_addresses_list (old_tmp); - g_free (tmp); + after_remove = modest_text_utils_remove_duplicate_addresses (buffer->str); + g_string_free (buffer, TRUE); + + recipients = modest_text_utils_split_addresses_list (after_remove); + g_free (after_remove); return recipients; } -- 1.7.9.5