projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* uip/pick.c: Print matching messages immediately, instead of
[mmh]
/
sbr
/
fmt_rfc2047.c
diff --git
a/sbr/fmt_rfc2047.c
b/sbr/fmt_rfc2047.c
index
9f5b26d
..
9d5b6d3
100644
(file)
--- a/
sbr/fmt_rfc2047.c
+++ b/
sbr/fmt_rfc2047.c
@@
-10,6
+10,7
@@
*/
#include <h/mh.h>
*/
#include <h/mh.h>
+#include <h/utils.h>
#ifdef HAVE_ICONV
# include <iconv.h>
# include <errno.h>
#ifdef HAVE_ICONV
# include <iconv.h>
# include <errno.h>
@@
-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);
/* .. 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;
@@
-195,11
+196,19
@@
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;
- 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.
}
/* 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.