X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffmt_rfc2047.c;h=ef1bdfac8f50106c15f89aeea74517847a2fd2c0;hp=9f5b26d092c87bfc115cb1c805a53e1536dc6888;hb=d2f12554a254e814dcdafb3828fc0d9936154eef;hpb=6630f05d0a6d631c9ed2edfef9951df892287794 diff --git a/sbr/fmt_rfc2047.c b/sbr/fmt_rfc2047.c index 9f5b26d..ef1bdfa 100644 --- a/sbr/fmt_rfc2047.c +++ b/sbr/fmt_rfc2047.c @@ -10,6 +10,7 @@ */ #include +#include #ifdef HAVE_ICONV # include # include @@ -134,7 +135,7 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) /* .. it can't. We'll use iconv then. */ *pp = '\0'; cd = iconv_open(get_charset(), startofmime); - fromutf8 = !strcasecmp(startofmime, "UTF-8"); + fromutf8 = !mh_strcasecmp(startofmime, "UTF-8"); *pp = '?'; if (cd == (iconv_t)-1) continue; use_iconv = 1; @@ -195,11 +196,19 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) } #ifdef HAVE_ICONV + /* + * empty encoded text. This ensures that we don't + * malloc 0 bytes but skip on to the end + */ + if (endofmime == startofmime) { + use_iconv = 0; + iconv_close(cd); + } + if (use_iconv) { saveq = q; savedstlen = dstlen; - if (!(q = convbuf = (char *)malloc(endofmime - startofmime))) - continue; + q = convbuf = (char *) mh_xmalloc(endofmime - startofmime); } /* ADDCHR2 is for adding characters when q is or might be convbuf: * in this case on buffer-full we want to run iconv before returning.