|
sylpheed-jp:1732
From: Hiroyuki Yamamoto <hiro-y@xxxxxxxxxx> 山本です。 On Fri, 17 May 2002 14:53:50 +0900 とみたまさひろ <tommy@xxxxxxxxxx> wrote: > > 0.7.6 でも直ってなくて、ちょっと会社の業務に支障をきたすようになって > > きたので、もう一度挑戦して適当にパッチを作ってみました。 > > > > 良く理解せずにいじってるので、かなり怪しいのですが、いちおうそれなり > > に動いているみたいです。 > > すいません、ダメダメでした。場合によってはメールヘッダを壊してしまいま > す。 > > ということで、作り直しました。今回はちゃんとソースを理解して作ったつも > りです。 パッチありがとうございました。が、これでも挙動がちょっと変だったので、 真面目にコードを追ってみました # 泣きそうになりながら(^^;; 自分で書いたコードなのに…… # 実はこのバグは前から気づいていたんですが、後で完全に書き直すつもりで # 放ってました(笑) というわけで、次のようにするとばっちり直っていると思います。 # 今から cvs commit します。 --- src/codeconv.c 2002/02/28 08:18:25 1.48 +++ src/codeconv.c 2002/05/20 10:51:17 @@ -1042,6 +1042,7 @@ while (*wsrcp) { wchar_t *wp, *wtmp, *wtmpp; gint nspc = 0; + gboolean str_is_non_ascii; /* irresponsible buffer overrun check */ if ((len - (destp - dest)) < (MAX_LINELEN + 1) * 2) break; @@ -1052,8 +1053,11 @@ wp = wsrcp; while ((wp = find_wspace(wp)) != NULL) if (!is_next_nonascii(wp)) break; - } else + str_is_non_ascii = TRUE; + } else { wp = find_wspace(wsrcp); + str_is_non_ascii = FALSE; + } if (wp != NULL) { wtmp = wcsndup(wsrcp, wp - wsrcp); @@ -1088,7 +1092,7 @@ if (prev_mbl == 1 && mbl == 2) mb_seqlen += JIS_SEQLEN * 2; - if (mb_seqlen) { + if (str_is_non_ascii) { gint dlen = mimehdr_len + B64LEN(tlen + mb_seqlen + mbl); @@ -1145,7 +1149,7 @@ line_len++; } - if (mb_seqlen) { + if (str_is_non_ascii) { gchar *tmp_jis; tmp_jis = g_new(gchar, tlen + mb_seqlen + 1); -- Hiroyuki Yamamoto <yamamoto@xxxxxxxxxx> http://www.good-day.co.jp/ (Good-Day) http://www.good-day.net/ (Good-Day.NET) http://sylpheed.good-day.net/ (Sylpheed) 1461 2002-02-05 16:46 [tommy@xxxxxxxxxx ] 添付ファイル名に空白が入る 1727 2002-05-17 01:31 ┗[tommy@xxxxxxxxxx ] 1728 2002-05-17 14:53 ┗[tommy@xxxxxxxxxx ] -> 1732 2002-05-20 20:02 ┗[hiro-y@xxxxxxxxxx ] |