X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=imap%2Futf7.c;h=95e8fd62aa3b12f4db08659224a0daf16b407dcf;hp=bc5571a5bf001ae66d1b800f9285dbb60ccd5315;hb=ea912b20ba2b3b9dfdbbae758ad56263c9aa41b3;hpb=492434e350e3ca2d3330c2589de3f9485929dab7 diff --git a/imap/utf7.c b/imap/utf7.c index bc5571a..95e8fd6 100644 --- a/imap/utf7.c +++ b/imap/utf7.c @@ -52,7 +52,7 @@ static char *utf7_to_utf8 (const char *u7, size_t u7len, char **u8, char *buf, *p; int b, ch, k; - p = buf = safe_malloc (u7len + u7len / 8 + 1); + p = buf = mem_malloc (u7len + u7len / 8 + 1); for (; u7len; u7++, u7len--) { if (*u7 == '&') { @@ -113,13 +113,13 @@ static char *utf7_to_utf8 (const char *u7, size_t u7len, char **u8, if (u8len) *u8len = p - buf; - safe_realloc (&buf, p - buf); + mem_realloc (&buf, p - buf); if (u8) *u8 = buf; return buf; bail: - FREE (&buf); + mem_free (&buf); return 0; } @@ -142,7 +142,7 @@ static char *utf8_to_utf7 (const char *u8, size_t u8len, char **u7, * In the worst case we convert 2 chars to 7 chars. For example: * "\x10&\x10&..." -> "&ABA-&-&ABA-&-...". */ - p = buf = safe_malloc ((u8len / 2) * 7 + 6); + p = buf = mem_malloc ((u8len / 2) * 7 + 6); while (u8len) { unsigned char c = *u8; @@ -206,7 +206,7 @@ static char *utf8_to_utf7 (const char *u8, size_t u8len, char **u7, } if (u8len) { - FREE (&buf); + mem_free (&buf); return 0; } @@ -219,34 +219,37 @@ static char *utf8_to_utf7 (const char *u8, size_t u8len, char **u7, *p++ = '\0'; if (u7len) *u7len = p - buf; - safe_realloc (&buf, p - buf); + mem_realloc (&buf, p - buf); if (u7) *u7 = buf; return buf; bail: - FREE (&buf); + mem_free (&buf); return 0; } void imap_utf7_encode (char **s) { if (Charset) { - char *t = safe_strdup (*s); + char *t = str_dup (*s); - if (!mutt_convert_string (&t, Charset, "UTF-8", 0)) - utf8_to_utf7 (t, mutt_strlen (t), s, 0); - FREE (&t); + if (!mutt_convert_string (&t, Charset, "UTF-8", 0)) { + char *u7 = utf8_to_utf7 (t, strlen (t), NULL, 0); + mem_free (s); + *s = u7; + } + mem_free (&t); } } void imap_utf7_decode (char **s) { if (Charset) { - char *t = utf7_to_utf8 (*s, mutt_strlen (*s), 0, 0); + char *t = utf7_to_utf8 (*s, str_len (*s), 0, 0); if (t && !mutt_convert_string (&t, "UTF-8", Charset, 0)) { - FREE (s); + mem_free (s); *s = t; } }