aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--ChangeLog.ja9
-rw-r--r--libsylph/recv.c3
-rw-r--r--libsylph/utils.c2
4 files changed, 21 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 29e4e3a7..aa5adf3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,14 @@
2007-04-18
- * src/printing.c: message_count_page(): a workaround for the crach
+ * libsylph/recv.c: recv_bytes(): restrict the buffer size up to
+ BUFFSIZE (fixes crashes when trying to fetch >64KB messages on IMAP4
+ via FreeCap on Win32).
+ * libsylph/utils.c: log_print(): use g_print() instead of fputs()
+ when output to stdout to display UTF-8 correctly.
+
+2007-04-18
+
+ * src/printing.c: message_count_page(): a workaround for the crash
which seems to occur on Fedora Core.
2007-04-17
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 75152ba9..5fa8d8d3 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,14 @@
2007-04-18
+ * libsylph/recv.c: recv_bytes(): バッファサイズの上限を BUFFSIZE
+ に制限するようにした(Win32 で FreeCap 経由で IMAP4 上の 64KB 以上の
+ メッセージを取得しようとするとクラッシュするのを修正)。
+ * libsylph/utils.c: log_print(): UTF-8 を正しく表示するために、
+ stdout に出力するときは fputs() でなく g_print() を使用するように
+ した。
+
+2007-04-18
+
* src/printing.c: message_count_page(): Fedora Core で発生すると
思われるクラッシュへの対策。
diff --git a/libsylph/recv.c b/libsylph/recv.c
index 47222709..d813eba7 100644
--- a/libsylph/recv.c
+++ b/libsylph/recv.c
@@ -50,7 +50,8 @@ gchar *recv_bytes(SockInfo *sock, glong size)
do {
gint read_count;
- read_count = sock_read(sock, buf + count, size - count);
+ read_count = sock_read(sock, buf + count,
+ MIN(BUFFSIZE, size - count));
if (read_count <= 0) {
g_free(buf);
return NULL;
diff --git a/libsylph/utils.c b/libsylph/utils.c
index ed3ac5d7..1336d954 100644
--- a/libsylph/utils.c
+++ b/libsylph/utils.c
@@ -4139,7 +4139,7 @@ void log_print(const gchar *format, ...)
g_vsnprintf(buf + TIME_LEN, BUFFSIZE, format, args);
va_end(args);
- if (debug_mode) fputs(buf, stdout);
+ if (debug_mode) g_print("%s", buf);
log_print_ui_func(buf);
if (log_fp) {
fputs(buf, log_fp);