commit 34bfb629fcce5df9ad86994fff51f60ee7c0b5c7
parent 2f9a45ca063de741f02139ca0c94d0363b0ab608
Author: Colin Leroy <colin@colino.net>
Date: Wed, 10 Oct 2018 09:59:10 +0200
Fix in-memory temporary file length
Diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/procmime.c b/src/procmime.c
@@ -428,8 +428,10 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo)
err = TRUE;
}
}
- if (tmpfp != outfp)
+ if (tmpfp != outfp) {
+ ftruncate(fileno(tmpfp), ftell(tmpfp));
claws_fclose(tmpfp);
+ }
} else if (encoding == ENC_X_UUENCODE) {
gchar outbuf[BUFFSIZE];
gint len;
@@ -465,6 +467,7 @@ gboolean procmime_decode_content(MimeInfo *mimeinfo)
g_warning("write error");
}
+ ftruncate(fileno(outfp), ftell(outfp));
claws_fclose(outfp);
claws_fclose(infp);
@@ -856,6 +859,7 @@ FILE *procmime_get_text_content(MimeInfo *mimeinfo)
err = procmime_scan_text_content(mimeinfo, scan_fputs_cb, outfp);
+ ftruncate(fileno(outfp), ftell(outfp));
rewind(outfp);
if (err == TRUE) {
claws_fclose(outfp);
@@ -897,7 +901,7 @@ FILE *procmime_get_binary_content(MimeInfo *mimeinfo)
if (procmime_get_part_to_stream(outfp, mimeinfo) < 0) {
return NULL;
}
-
+ ftruncate(fileno(outfp), ftell(outfp));
return outfp;
}