この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2007年4月)

2007年4月10日

Bug 5625 スレッドペインで件名カラムが空白になるメールがある
初回投稿日時: 2007年04月10日23時45分48秒
カテゴリ: Mozilla Core SeaMonkey Thunderbird
SNS: (list)

Trunkでのみ発生していた謎のバグ。ランダムっぽく発生して、原因が全く想像つかなかったのだが、デバッグビルドを作って走らせてみると簡単に問題を発見できた。

デバッグビルドで表示されない行の上をマウスカーソルが移動するとUTF-8をUTF-16に変換しようとする関数内で元の文字列がUTF-8じゃないというエラーが出まくっていた。しかし、デバッグして中身を見ても、UTF-8っぽいバイト列だったが、そのデータを作っているコードを見て理由が分かった。

問題はsubjectではなく、アラート用にプレビューテキストを生成する際にUTF-8文字列を特定のバイト数でばっさりと切っていたのが原因だった(trunkではsubjectとプレビューテキストが共にリストアップされる)。ようするに最後の一文字が中途半端に切られていると、validではないUTF-8の文字列になってしまって、描画時に処理が中断してしまっていたのだ。

UTF-8の文字単位でバイト数をカウントして、文字列を縮める関数を用意して、それでプレビューテキストを生成するようにし、表示時の処理もプレビューテキストの取得に失敗してもsubjectだけは表示されるように修正した。

ちなみに、Thunderbird2には間に合っていないのでプレビューテキストが壊れて保存されていくことになる。これによるThunderbird2で発生する問題は新着メールのアラートで該当のメールのプレビューが表示されないことだけで、trunkのように深刻な問題は無い。ただ、壊れたデータが蓄積されている可能性のあるものを今後も処理していかないといけないので、似たようなバグが発生する可能性はある。

関連するかもしれないエントリ

bug 5625を含むエントリ