projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add protective 'do { ... } while (0)' wrappers to multistatement macros
[mmh]
/
sbr
/
fmt_rfc2047.c
diff --git
a/sbr/fmt_rfc2047.c
b/sbr/fmt_rfc2047.c
index
0eb71bd
..
9d5b6d3
100644
(file)
--- a/
sbr/fmt_rfc2047.c
+++ b/
sbr/fmt_rfc2047.c
@@
-135,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);
/* .. 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;
*pp = '?';
if (cd == (iconv_t)-1) continue;
use_iconv = 1;
@@
-196,6
+196,15
@@
decode_rfc2047 (char *str, char *dst, size_t dstlen)
}
#ifdef HAVE_ICONV
}
#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) {
+ use_iconv = 0;
+ iconv_close(cd);
+ }
+
if (use_iconv) {
saveq = q;
savedstlen = dstlen;
if (use_iconv) {
saveq = q;
savedstlen = dstlen;