{
char *tmp;
char *p;
-
+ int i;
+
for (; h; h = h->next)
{
- if ((p = strchr (h->data, ':')))
- {
- *p++ = 0;
- SKIPWS (p);
- tmp = safe_strdup (p);
- rfc2047_encode_string (&tmp);
- safe_realloc ((void **) &h->data,
- strlen (h->data) + 2 + strlen (tmp) + 1);
- strcat (h->data, ": "); /* __STRCAT_CHECKED__ */
- strcat (h->data, tmp); /* __STRCAT_CHECKED__ */
- safe_free ((void **) &tmp);
- }
+ if (!(p = strchr (h->data, ':')))
+ continue;
+
+ i = p - h->data;
+ ++p; SKIPWS (p);
+ tmp = safe_strdup (p);
+
+ if (!tmp)
+ continue;
+
+ rfc2047_encode_string (&tmp);
+ safe_realloc ((void **) &h->data,
+ mutt_strlen (h->data) + 2 + mutt_strlen (tmp) + 1);
+
+ sprintf (h->data + i, ": %s", NONULL (tmp)); /* __SPRINTF_CHECKED__ */
+
+ safe_free ((void **) &tmp);
}
}