- snprintf (fmt, sizeof (fmt), "%%%sc", prefix);
- snprintf (dest, destlen, fmt,
- ((i = mutt_user_is_recipient(hdr)) < m_strlen(Tochars)) ? Tochars[i] : ' ');
+ i = mutt_user_is_recipient(hdr);
+ assert (i >= 0); /* help compiler to see c is initialized */
+
+ if (Charset_is_utf8) {
+ const char *s = Tochars;
+
+ snprintf (fmt, sizeof (fmt), "%%%slc", prefix);
+ while (i-- >= 0) {
+ c = m_ustrgetc(s, &s);
+ if (c <= 0) {
+ c = ' ';
+ break;
+ }
+ }
+
+ snprintf(dest, destlen, fmt, c);
+ } else {
+ snprintf(fmt, sizeof (fmt), "%%%sc", prefix);
+ snprintf(dest, destlen, fmt, i < m_strlen(Tochars) ? Tochars[i] : ' ');
+ }