X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Ffmt_rfc2047.c;h=4d3fc296d0e90d987d5002035446f30884dd0e5e;hb=a4e085dcc682da556af59d8b2c8a0afe44c6f257;hp=83ef21eb2c8ef89901386dc7d36231f797197d66;hpb=7e669f1b5d51b1d562efd79ef04b8441574c0334;p=mmh diff --git a/sbr/fmt_rfc2047.c b/sbr/fmt_rfc2047.c index 83ef21e..4d3fc29 100644 --- a/sbr/fmt_rfc2047.c +++ b/sbr/fmt_rfc2047.c @@ -2,8 +2,6 @@ /* * fmt_rfc2047.c -- decode RFC-2047 header format * - * $Id$ - * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. @@ -71,7 +69,7 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) int whitespace = 0; /* how much whitespace between encodings? */ #ifdef HAVE_ICONV int use_iconv = 0; /* are we converting encoding with iconv? */ - iconv_t cd; + iconv_t cd = NULL; int fromutf8 = 0; char *saveq, *convbuf = NULL; size_t savedstlen; @@ -135,7 +133,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; @@ -200,8 +198,10 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) * empty encoded text. This ensures that we don't * malloc 0 bytes but skip on to the end */ - if (endofmime == startofmime) + if (endofmime == startofmime && use_iconv) { use_iconv = 0; + iconv_close(cd); + } if (use_iconv) { saveq = q; @@ -236,6 +236,7 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) } else { /* base64 */ int c1, c2, c3, c4; + c1 = c2 = c3 = c4 = -1; pp = startofmime; while (pp < endofmime) {