about summary refs log tree commit diff
path: root/rfc2047.c
diff options
context:
space:
mode:
Diffstat (limited to 'rfc2047.c')
-rw-r--r--rfc2047.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/rfc2047.c b/rfc2047.c
index ab65772..1cfec5c 100644
--- a/rfc2047.c
+++ b/rfc2047.c
@@ -130,6 +130,9 @@ blaze822_decode_rfc2047(char *dst, char *src, size_t dlen, char *tgtenc)
 	iconv_t ic = (iconv_t)-1;
 	char *srcenc = 0;
 
+	char *startdst = dst;
+	size_t startdlen = dlen;
+
 	char *b = src;
 
 	// XXX use memmem
@@ -233,9 +236,6 @@ blaze822_decode_rfc2047(char *dst, char *src, size_t dlen, char *tgtenc)
 			}
 		}
 
-		if (memchr(dst, 0, dlen))
-			goto nocode;
-
 		while (!partial && declen && dlen) {
 			*dst++ = *dec++;
 			declen--;
@@ -252,6 +252,12 @@ blaze822_decode_rfc2047(char *dst, char *src, size_t dlen, char *tgtenc)
 		dlen--;
 	}
 
+	if (memchr(startdst, 0, dst - startdst)) {
+		dst = startdst;
+		dlen = startdlen;
+		goto nocodeok;
+	}
+
 	*dst = 0;
 
 	if (ic != (iconv_t)-1)