[evolution] Fix a crash when replying to all recipients
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Fix a crash when replying to all recipients
- Date: Wed, 19 Oct 2016 12:19:30 +0000 (UTC)
commit afd7d8094da00c14b91972125ca548ca1d35b8d7
Author: Milan Crha <mcrha redhat com>
Date: Wed Oct 19 14:18:16 2016 +0200
Fix a crash when replying to all recipients
An overlook of the usage of g_hash_table_add() made a mismatch
of expected values being stored in the hash table and the actual values.
src/mail/em-composer-utils.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/src/mail/em-composer-utils.c b/src/mail/em-composer-utils.c
index 82db435..86c3eee 100644
--- a/src/mail/em-composer-utils.c
+++ b/src/mail/em-composer-utils.c
@@ -2767,7 +2767,7 @@ concat_unique_addrs (CamelInternetAddress *dest,
for (i = 0; camel_internet_address_get (src, i, &name, &addr); i++) {
if (!g_hash_table_contains (rcpt_hash, addr)) {
camel_internet_address_add (dest, name, addr);
- g_hash_table_add (rcpt_hash, (gpointer) addr);
+ g_hash_table_insert (rcpt_hash, g_strdup (addr), NULL);
}
}
}
@@ -2818,6 +2818,13 @@ add_source_to_recipient_hash (ESourceRegistry *registry,
g_hash_table_insert (rcpt_hash, g_strdup (address), g_object_ref (source));
}
+static void
+unref_nonull_object (gpointer ptr)
+{
+ if (ptr)
+ g_object_unref (ptr);
+}
+
static GHashTable *
generate_recipient_hash (ESourceRegistry *registry)
{
@@ -2831,7 +2838,7 @@ generate_recipient_hash (ESourceRegistry *registry)
rcpt_hash = g_hash_table_new_full (
camel_strcase_hash,
camel_strcase_equal,
- g_free, g_object_unref);
+ g_free, unref_nonull_object);
default_source = e_source_registry_ref_default_mail_identity (registry);
@@ -2938,7 +2945,7 @@ em_utils_get_reply_all (ESourceRegistry *registry,
* address because replying to oneself is
* kinda silly. */
camel_internet_address_add (to, name, addr);
- g_hash_table_add (rcpt_hash, (gpointer) addr);
+ g_hash_table_insert (rcpt_hash, g_strdup (addr), NULL);
}
}
}
@@ -2948,7 +2955,7 @@ em_utils_get_reply_all (ESourceRegistry *registry,
/* Promote the first Cc: address to To: if To: is empty. */
if (camel_address_length ((CamelAddress *) to) == 0 &&
- camel_address_length ((CamelAddress *) cc) > 0) {
+ camel_address_length ((CamelAddress *) cc) > 0) {
camel_internet_address_get (cc, 0, &name, &addr);
camel_internet_address_add (to, name, addr);
camel_address_remove ((CamelAddress *) cc, 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]