aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.ja5
-rw-r--r--libsylph/procmime.c20
3 files changed, 30 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index f8776bf8..fbbeaadc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-09-13
+
+ * libsylph/procmime.c: procmime_decode_content(): fflush temporary
+ file and check errors.
+
2006-09-12
* src/importldif.c: change cancel button to close when import
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 16abc786..4b8800ff 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,3 +1,8 @@
+2006-09-13
+
+ * libsylph/procmime.c: procmime_decode_content(): 一時ファイルを
+ fflush し、エラーをチェックするようにした。
+
2006-09-12
* src/importldif.c: インポートが完了したらキャンセルボタンを閉じる
diff --git a/libsylph/procmime.c b/libsylph/procmime.c
index 193c23e0..98088ad6 100644
--- a/libsylph/procmime.c
+++ b/libsylph/procmime.c
@@ -829,6 +829,12 @@ FILE *procmime_decode_content(FILE *outfp, FILE *infp, MimeInfo *mimeinfo)
}
if (normalize_lbreak) {
+ if (fflush(tmpfp) == EOF) {
+ perror("fflush");
+ fclose(tmpfp);
+ if (tmp_file) fclose(outfp);
+ return NULL;
+ }
rewind(tmpfp);
while (fgets(buf, sizeof(buf), tmpfp) != NULL) {
#ifdef G_OS_WIN32
@@ -872,6 +878,12 @@ FILE *procmime_decode_content(FILE *outfp, FILE *infp, MimeInfo *mimeinfo)
base64_decoder_free(decoder);
if (normalize_lbreak) {
+ if (fflush(tmpfp) == EOF) {
+ perror("fflush");
+ fclose(tmpfp);
+ if (tmp_file) fclose(outfp);
+ return NULL;
+ }
rewind(tmpfp);
while (fgets(buf, sizeof(buf), tmpfp) != NULL) {
#ifdef G_OS_WIN32
@@ -924,6 +936,14 @@ FILE *procmime_decode_content(FILE *outfp, FILE *infp, MimeInfo *mimeinfo)
}
}
+ if (fflush(outfp) == EOF)
+ perror("fflush");
+ if (ferror(outfp) != 0) {
+ g_warning("procmime_decode_content(): Can't write to temporary file\n");
+ if (tmp_file) fclose(outfp);
+ return NULL;
+ }
+
if (tmp_file) rewind(outfp);
return outfp;
}