diff src/lib-mail/message-address.c @ 22153:528bd5a67923

lib-mail: message_address_write: Fix generating empty group list Empty group list ends with ": " not with ", ". Test case: { { name = NULL, mailbox = "group", domain = NULL }, { name = NULL, mailbox = NULL, domain = NULL } } converts to: group:;
author Pali Rohár <pali.rohar@gmail.com>
date Sun, 05 Jun 2016 15:48:14 +0200
parents 2e2563132d5f
children 91278ef69de7
line wrap: on
line diff
--- a/src/lib-mail/message-address.c	Fri Jun 09 23:32:28 2017 +0300
+++ b/src/lib-mail/message-address.c	Sun Jun 05 15:48:14 2016 +0200
@@ -341,6 +341,7 @@
 
 void message_address_write(string_t *str, const struct message_address *addr)
 {
+	const char *tmp;
 	bool first = TRUE, in_group = FALSE;
 
 	/* a) mailbox@domain
@@ -366,7 +367,12 @@
 				i_assert(addr->mailbox == NULL);
 
 				/* cut out the ", " */
-				str_truncate(str, str_len(str)-2);
+				tmp = str_c(str)+str_len(str)-2;
+				i_assert((tmp[0] == ',' || tmp[0] == ':') && tmp[1] == ' ');
+				if (tmp[0] == ',' && tmp[1] == ' ')
+					str_truncate(str, str_len(str)-2);
+				else if (tmp[0] == ':' && tmp[1] == ' ')
+					str_truncate(str, str_len(str)-1);
 				str_append_c(str, ';');
 			}