Bug 5625 スレッドペインで件名カラムが空白になるメールがある
初回投稿日時: 2007年04月10日23時45分48秒
カテゴリ: Mozilla Core SeaMonkey Thunderbird
SNS:
Tweet (list)
Trunkでのみ発生していた謎のバグ。ランダムっぽく発生して、原因が全く想像つかなかったのだが、デバッグビルドを作って走らせてみると簡単に問題を発見できた。
デバッグビルドで表示されない行の上をマウスカーソルが移動するとUTF-8をUTF-16に変換しようとする関数内で元の文字列がUTF-8じゃないというエラーが出まくっていた。しかし、デバッグして中身を見ても、UTF-8っぽいバイト列だったが、そのデータを作っているコードを見て理由が分かった。
問題はsubjectではなく、アラート用にプレビューテキストを生成する際にUTF-8文字列を特定のバイト数でばっさりと切っていたのが原因だった(trunkではsubjectとプレビューテキストが共にリストアップされる)。ようするに最後の一文字が中途半端に切られていると、validではないUTF-8の文字列になってしまって、描画時に処理が中断してしまっていたのだ。
UTF-8の文字単位でバイト数をカウントして、文字列を縮める関数を用意して、それでプレビューテキストを生成するようにし、表示時の処理もプレビューテキストの取得に失敗してもsubjectだけは表示されるように修正した。
ちなみに、Thunderbird2には間に合っていないのでプレビューテキストが壊れて保存されていくことになる。これによるThunderbird2で発生する問題は新着メールのアラートで該当のメールのプレビューが表示されないことだけで、trunkのように深刻な問題は無い。ただ、壊れたデータが蓄積されている可能性のあるものを今後も処理していかないといけないので、似たようなバグが発生する可能性はある。