X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffmt_rfc2047.c;h=687ea5774913c079f72389e96dfd16ed7287a347;hp=faa3cc2c0d3cc798550bea94c267c0e90c40500d;hb=88b2142594d5ea1e8385dae5eca81eed1018c555;hpb=db62cda50055368e5f4ac51df787053f70706c30 diff --git a/sbr/fmt_rfc2047.c b/sbr/fmt_rfc2047.c index faa3cc2..687ea57 100644 --- a/sbr/fmt_rfc2047.c +++ b/sbr/fmt_rfc2047.c @@ -209,7 +209,7 @@ decode_rfc2047(char *str, char *dst, size_t dstlen) if (use_iconv) { saveq = q; savedstlen = dstlen; - q = convbuf = (char *) mh_xmalloc(endofmime - startofmime); + q = convbuf = mh_xcalloc(endofmime - startofmime, sizeof(char)); } /* ** ADDCHR2 is for adding characters when q is or might be convbuf: @@ -318,8 +318,12 @@ decode_rfc2047(char *str, char *dst, size_t dstlen) break; /* skip to next input character */ if (fromutf8) { - for (start++;(start < q) && ((*start & 192) == 128);start++) + inbytes--; + start++; + while ((start < q) && ((*start & 192) == 128)) { + start++; inbytes--; + } } else start++, inbytes--; if (start >= q) @@ -337,7 +341,7 @@ decode_rfc2047(char *str, char *dst, size_t dstlen) if (!dstlen || !savedstlen) goto buffull; dstlen = savedstlen; - free(convbuf); + mh_free0(&convbuf); } #endif