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

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

もずはっく日記(2014年3月)

2014年3月11日

Bug-org 981954 Sometimes we remove a char message whose scan code is different from found message
初回投稿日時: 2014年03月11日12時51分04秒
最終更新日時: 2014年03月11日12時51分25秒
カテゴリ: Mozilla Core Mozilla28 Mozilla29 Mozilla30 Windows バグ修正
SNS: (list)

WM_*CHARPeekMessage()で発見後に、実際に削除を行った後、想定外な状況がおきていないか、取得したメッセージが発見していたメッセージと同一のものか確認し、違っていた場合には、暗っ氏レポートにログを吐いた後、MOZ_CRASH()でクラッシュさせていました。

このバグは、そのクラッシュで、WM_*CHARlParam内のスキャンコードが別のキーのものに置き換わっているというものです。

原因は分かっていませんが、メッセージキューの仕様から考えると、WM_*KEYDOWNWM_*CHARの前に割り込んだ後に、メッセージを削除すると、スキャンコードが差し込まれたキーメッセージのもので上書きされているのではないか、と推測しています。

現在、このスキャンコードで何らかの処理を行っている訳ではないので、この修正では、スキャンコードのみが変わっている場合、クラッシュせずにその違いを無視するようにしています。

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

bug-org 981954を含むエントリ