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

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

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

2010年4月12日

Bug-org 552914 nsEditor::mFlags is never modified by SetFlags()
初回投稿日時: 2010年04月12日14時52分37秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

エディタ内でフラグが二重に管理されていて、同期できていなかった(というかしていなかった)バグです。

ns*Editorクラスは、実際の編集処理をns*EditRulesクラスに任せています。ns*EditRulesクラスは各ns*Editorクラスのインスタンスの初期化時に行われますが、ここでフラグの内容がコピーされていました。しかし、nsIEditor::SetFlags()が呼ばれてもns*EditorRulesへの反映処理は全くありませんでした。

今回の修正でフラグは全てnsEditorで保持するように一本化し、ns*EditRulesは逐一、nsEditorに問い合わせるように修正しています。

またこのバグでコードを整理中に!flags & kFlagXといったミスを発見しました。もちろんコメントでは!(flags & kFlagX)を意図していました。この手のミスはありがちですし、コーディングルールの桁数制限上、非常に見づらいので全てのフラグの問い合わせがメソッドでできるように修正しています。

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

bug-org 552914を含むエントリ