X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fimap_utf7.c;h=501ceaf005696dcde0326964091f80500318d874;hb=0768462dc5830cde5ae7a3659577fb557926db28;hp=0c3d5a20dc125e55f9e1994d96ff86ad67c3cf8c;hpb=f267271de69d5c6c090e16ebd64041b50a844852;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/imap_utf7.c b/src/src/imap_utf7.c index 0c3d5a20d..501ceaf00 100644 --- a/src/src/imap_utf7.c +++ b/src/src/imap_utf7.c @@ -1,3 +1,6 @@ +/* Copyright (c) University of Cambridge 1995 - 2018 */ +/* See the file NOTICE for conditions of use and distribution. */ + #include "exim.h" #ifdef SUPPORT_I18N @@ -8,10 +11,9 @@ imap_utf7_encode(uschar *string, const uschar *charset, uschar sep, { static uschar encode_base64[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,"; -int ptr = 0; -int size = 0; size_t slen; -uschar *sptr, *yield = NULL; +uschar *sptr; +gstring * yield = NULL; int i = 0, j; /* compiler quietening */ uschar c = 0; /* compiler quietening */ BOOL base64mode = FALSE; @@ -170,7 +172,7 @@ while (slen > 0) if (outptr > outbuf + sizeof(outbuf) - 3) { - yield = string_catn(yield, &size, &ptr, outbuf, outptr - outbuf); + yield = string_catn(yield, outbuf, outptr - outbuf); outptr = outbuf; } @@ -196,12 +198,12 @@ if (base64mode) iconv_close(icd); #endif -yield = string_catn(yield, &size, &ptr, outbuf, outptr - outbuf); -if (yield[ptr-1] == '.') - ptr--; -yield[ptr] = '\0'; +yield = string_catn(yield, outbuf, outptr - outbuf); + +if (yield->s[yield->ptr-1] == '.') + yield->ptr--; -return yield; +return string_from_gstring(yield); } #endif /* whole file */