summaryrefslogtreecommitdiffabout
path: root/kmicromail/libetpan/mime/mailmime_decode.c
Unidiff
Diffstat (limited to 'kmicromail/libetpan/mime/mailmime_decode.c') (more/less context) (show whitespace changes)
-rw-r--r--kmicromail/libetpan/mime/mailmime_decode.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/kmicromail/libetpan/mime/mailmime_decode.c b/kmicromail/libetpan/mime/mailmime_decode.c
index dbaeb68..b2ab0f7 100644
--- a/kmicromail/libetpan/mime/mailmime_decode.c
+++ b/kmicromail/libetpan/mime/mailmime_decode.c
@@ -114,14 +114,15 @@ int mailmime_encoded_phrase_parse(const char * default_fromcode,
114 goto err; 114 goto err;
115 } 115 }
116 116
117 first = TRUE; 117 first = TRUE;
118 118
119 type = TYPE_ERROR; /* XXX - removes a gcc warning */ 119 type = TYPE_ERROR; /* XXX - removes a gcc warning */
120 120 // LUTZ add
121 while (1) { 121 int appendNewLine = FALSE;
122 while (1) { //while
122 123
123 r = mailmime_encoded_word_parse(message, length, &cur_token, &word); 124 r = mailmime_encoded_word_parse(message, length, &cur_token, &word);
124 if (r == MAILIMF_NO_ERROR) { 125 if (r == MAILIMF_NO_ERROR) {
125 if (!first) { 126 if (!first) {
126 if (type != TYPE_ENCODED_WORD) { 127 if (type != TYPE_ENCODED_WORD) {
127 if (mmap_string_append_c(gphrase, ' ') == NULL) { 128 if (mmap_string_append_c(gphrase, ' ') == NULL) {
@@ -196,26 +197,40 @@ int mailmime_encoded_phrase_parse(const char * default_fromcode,
196 case MAIL_CHARCONV_ERROR_UNKNOWN_CHARSET: 197 case MAIL_CHARCONV_ERROR_UNKNOWN_CHARSET:
197 case MAIL_CHARCONV_ERROR_CONV: 198 case MAIL_CHARCONV_ERROR_CONV:
198 free(raw_word); 199 free(raw_word);
199 res = MAILIMF_ERROR_PARSE; 200 res = MAILIMF_ERROR_PARSE;
200 goto free; 201 goto free;
201 } 202 }
202 203 // LUTZ add
204 if ( appendNewLine ) {
205 appendNewLine = FALSE;
206 if (mmap_string_append(gphrase, "\n") == NULL) {
207 free(wordutf8);
208 free(raw_word);
209 res = MAILIMF_ERROR_MEMORY;
210 goto free;
211 }
212 }
213 //fprintf(stderr,"append *%s* \n",wordutf8 );
203 if (mmap_string_append(gphrase, wordutf8) == NULL) { 214 if (mmap_string_append(gphrase, wordutf8) == NULL) {
204 free(wordutf8); 215 free(wordutf8);
205 free(raw_word); 216 free(raw_word);
206 res = MAILIMF_ERROR_MEMORY; 217 res = MAILIMF_ERROR_MEMORY;
207 goto free; 218 goto free;
208 } 219 }
209 // LUTZ fix 220 // LUTZ fix
210 free(wordutf8); 221 free(wordutf8);
211 free(raw_word); 222 free(raw_word);
212 first = FALSE; 223 first = FALSE;
213 } 224 }
214 else if (r == MAILIMF_ERROR_PARSE) { 225 else if (r == MAILIMF_ERROR_PARSE) {
226 // LUTZ add
227 if ( cur_token >= length )
215 break; 228 break;
229 ++cur_token;
230 appendNewLine = TRUE;
216 } 231 }
217 else { 232 else {
218 res = r; 233 res = r;
219 goto free; 234 goto free;
220 } 235 }
221 } 236 }