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

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

もずはっく日記(2013年9月)

2013年9月30日

Bug-org 910978 Implement Assign*EventData() for all ns*Event
初回投稿日時: 2013年09月30日21時20分13秒
カテゴリ: Events Mozilla Core Mozilla26 バグ修正
SNS: (list)

全ての内部イベントクラスにメンバをコピーするメソッドを実装しようというバグです。

もともとは、nsDOMEventで、変数に保存されたDOMイベントのディスパッチが終わった後にも、各プロパティにアクセスできるようにするために、コピーしていただけだったので、nsDOMEvent内で直接行われていました。このため、nsGUIEvent.h内でイベントクラスにメンバを追加しても、ここの修正を忘れていたり、Bug-org 910156のようなバグの温床になるので、クラスの定義部分で確実に管理できるようにしようというのが、このバグ修正の理由となっています。

コピーコンストラクタを作れ、という意見もあるかと思いますが、イベント全体を丸ごと単純にコピーする、という用途は皆無なので、あえて、通常のコンストラクタでインスタンス生成後に、内容を条件に応じてコピーするメソッドを利用するという形になっています(strong referenceなメンバを含んでいるので、単純なコピーを許可すると、メモリリークバグを産みやすくなってしまうため)。

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

bug-org 910978を含むエントリ