summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addrbook.c8
-rw-r--r--alias.c13
-rw-r--r--init.c3
3 files changed, 16 insertions, 8 deletions
diff --git a/addrbook.c b/addrbook.c
index a1670e9a..a3088188 100644
--- a/addrbook.c
+++ b/addrbook.c
@@ -227,16 +227,14 @@ new_aliases:
{
if (AliasTable[i]->tagged)
{
- mutt_addrlist_to_local (AliasTable[i]->addr);
- rfc822_write_address (buf, buflen, AliasTable[i]->addr, 0);
+ rfc822_write_address (buf, buflen, AliasTable[i]->addr, 1);
t = -1;
}
}
- if(t != -1)
+ if (t != -1)
{
- mutt_addrlist_to_local (AliasTable[t]->addr);
- rfc822_write_address (buf, buflen, AliasTable[t]->addr, 0);
+ rfc822_write_address (buf, buflen, AliasTable[t]->addr, 1);
}
mutt_menuDestroy (&menu);
diff --git a/alias.c b/alias.c
index baeafb3b..d9b52fa8 100644
--- a/alias.c
+++ b/alias.c
@@ -456,7 +456,12 @@ void mutt_alias_add_reverse (ALIAS *t)
ADDRESS *ap;
if (!t)
return;
-
+
+ /* Note that the address mailbox should be converted to intl form
+ * before using as a key in the hash. This is currently done
+ * by all callers, but added here mostly as documentation.. */
+ mutt_addrlist_to_intl (t->addr, NULL);
+
for (ap = t->addr; ap; ap = ap->next)
{
if (!ap->group && ap->mailbox)
@@ -469,7 +474,11 @@ void mutt_alias_delete_reverse (ALIAS *t)
ADDRESS *ap;
if (!t)
return;
-
+
+ /* If the alias addresses were converted to local form, they won't
+ * match the hash entries. */
+ mutt_addrlist_to_intl (t->addr, NULL);
+
for (ap = t->addr; ap; ap = ap->next)
{
if (!ap->group && ap->mailbox)
diff --git a/init.c b/init.c
index 7f16d591..6534f69e 100644
--- a/init.c
+++ b/init.c
@@ -3158,7 +3158,8 @@ void mutt_init (int skip_sys_rc, LIST *commands)
err.dptr = err.data;
Groups = hash_create (1031, 0);
- ReverseAlias = hash_create (1031, MUTT_HASH_STRCASECMP);
+ /* reverse alias keys need to be strdup'ed because of idna conversions */
+ ReverseAlias = hash_create (1031, MUTT_HASH_STRCASECMP | MUTT_HASH_STRDUP_KEYS);
mutt_menu_init ();
mutt_srandom ();