Closed Bug 254944 Opened 20 years ago Closed 20 years ago

Crash when clicking on XUL button [@ AppendUTF8toUTF16 ]

Categories

(Core :: XUL, defect)

defect
Not set
critical

Tracking

()

VERIFIED FIXED
mozilla1.8alpha3

People

(Reporter: SanderSpies, Assigned: bzbarsky)

Details

(Keywords: crash, testcase)

Crash Data

Attachments

(3 files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040808 Firefox/0.9.1+
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040808 Firefox/0.9.1+

Following code crashes mozilla firefox (Gecko/20040808 Firefox/0.9.1+)  and
mozilla 1.8a2:

<button id="crasher" label="crasher" command="crasher"/>



Reproducible: Always
Steps to Reproduce:
1. Create a new file.
2. Insert the following lines:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="example-window" title="Community"
        xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
          <button id="crasher" label="crasher" command="crasher"/>
</window>




3. Open the file in mozilla or firefox
4. Click on the button

Actual Results:  
Crash.

Expected Results:  
Error in javascript console.
Attached file Testcase
i also see this with a current cvs trunk build on win2k, stacktrace:
AppendUTF8toUTF16(const nsACString & {...}, nsAString & {...}) line 230 + 8
bytes
AtomImpl::ToString(AtomImpl * const 0x03f1d308, nsAString & {...}) line 362 +
47 bytes
nsAttrValue::ToString(const nsAttrValue * const 0x00010011, nsAString & {...})
line 290
nsXULElement::GetAttr(const nsXULElement * const 0x00010011, int 0x00000000,
nsIAtom * 0x00e84be0, nsAString & {...}) line 2249
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x00000000, unsigned int
0x00000001, nsEventStatus * 0x0012f428) line 2642
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
nsXULElement::HandleDOMEvent(nsXULElement * const 0x00010011, nsPresContext *
0x08ba0c70, nsEvent * 0x0012f3dc, nsIDOMEvent * * 0x09572b1c, unsigned int
0x09572b10, nsEventStatus * 0x0012f428) line 2648 + 17 bytes
(neverending list of nsXULElement::HandleDOMEvent follows)
Keywords: crash, testcase
since i got some different stacktrace with a also up-to-date FF trunk build,
here is (some hopefully, i didn't find that this bug is a dupe, so this work
wasn't for nothing) output from Purify:
[E] EXU: Unhandled exception in CoverageIsRecordingData {1 occurrence}
        Exception code: 0xc00000fd [Error: stack overflow]
        Exception address:  [PURERT.DLL ip=0x3f04c440]
        Filter: mainCRTStartup [crtexe.c:345]
        Exception location
            nsReadingIterator<char>::advance(int) [nsStringIterator.h:172]
           
nsCharSourceTraits<nsReadingIterator<char>>::advance(nsReadingIterator<char>&,int)
[nsCharTraits.h:611]
            copy_string(nsReadingIterator<char>&,nsReadingIterator<char>
const&,CalculateUTF8Length&) [nsAlgorithm.h:97]
            AppendUTF8toUTF16(nsACString const&,nsAString&)
[nsReadableUtils.cpp:232]
            CopyUTF8toUTF16(nsACString const&,nsAString&) [nsReadableUtils.cpp:93]
            AtomImpl::ToString(nsAString&) [nsAtomTable.cpp:362]
            nsAttrValue::ToString(nsAString&)const [nsAttrValue.cpp:288]
            nsXULElement::GetAttr(int,nsIAtom *,nsAString&)const
[nsXULElement.cpp:2218]
            nsXULElement::HandleDOMEvent(nsIPresContext *,nsEvent *,nsIDOMEvent
* *,UINT,nsEventStatus *) [nsXULElement.cpp:2613]
            nsXULElement::HandleDOMEvent(nsIPresContext *,nsEvent *,nsIDOMEvent
* *,UINT,nsEventStatus *) [nsXULElement.cpp:2620]

Confirming this bug so.
Assignee: nobody → string
Status: UNCONFIRMED → NEW
Component: XP Toolkit/Widgets: XUL → String
Ever confirmed: true
FF093/W2K -> TB523531H:
AppendUTF8toUTF16 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/xpcom/string/src/nsReadableUtils.cpp,
line 215]
AtomImpl::ToString 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/xpcom/ds/nsAtomTable.cpp,
line 362]
nsAttrValue::ToString 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/content/base/src/nsAttrValue.cpp,
line 290]
nsXULElement::GetAttr 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/content/xul/content/src/nsXULElement.cpp,
line 2274]
nsXULElement::HandleDOMEvent 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/content/xul/content/src/nsXULElement.cpp,
line 2667]
nsXULElement::HandleDOMEvent 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/content/xul/content/src/nsXULElement.cpp,
line 2673]
nsXULElement::HandleDOMEvent 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/content/xul/content/src/nsXULElement.cpp,
line 2673]
nsXULElement::HandleDOMEvent 
[d:/builds/tinderbox/firefox-0.9.3/WINNT_5.0_Clobber/mozilla/content/xul/content/src/nsXULElement.cpp,
line 2673]
...
Summary: Crash when clicking on XUL button → Crash when clicking on XUL button [@ AppendUTF8toUTF16 ]
Not a string bug.  This is an infinite recursion crash in the XUL code.  The
relevant part of the testcase:

<button id="command" command="command">

Assignee: string → nobody
Component: String → XP Toolkit/Widgets: XUL
OS: Windows 2000 → All
Hardware: PC → All
Attached patch PatchSplinter Review
Attachment #155656 - Flags: superreview?(peterv)
Attachment #155656 - Flags: review?(neil.parkwaycc.co.uk)
Attachment #155656 - Attachment is obsolete: true
Attachment #155656 - Attachment is obsolete: false
Attachment #155656 - Flags: superreview?(peterv)
Attachment #155656 - Flags: superreview-
Attachment #155656 - Flags: review?(neil.parkwaycc.co.uk)
Attachment #155656 - Flags: review-
Attachment #155657 - Flags: superreview?(peterv)
Attachment #155657 - Flags: review?(neil.parkwaycc.co.uk)
OK, so I trawled lxr for likely mismatched commands, and noticed that the
component view can't launch xmlterm or domi, but the only issue I came across
was that addressbook's cmd_delete currently uses a <broadcaster> element.
...which only affects the menuitem; <key>s use separate (nonrecursive) code.
Comment on attachment 155657 [details] [diff] [review]
Fix another edge case

Centalized event dispatch will get rid of all this cruft, right? r=me if you
fix addressbook.xul too.
Attachment #155657 - Flags: review?(neil.parkwaycc.co.uk) → review+
Attachment #155657 - Flags: superreview?(peterv) → superreview+
So what can I replace the <broadcaster> with?  What does it even mean to
retarget COMMAND events to a broadcaster?  I thought a broadcaster was just a
way to keep attrs in sync?
(In reply to comment #10)
>So what can I replace the <broadcaster> with?
Well, as it's the target of a command= or two, then after your patch the
menuitem's only going to work with a bona fide <command>, right?
>What does it even mean to retarget COMMAND events to a broadcaster?
I guess the nodes used to observe the broadcaster, and someone changed one
without changing the other (because they are in completely separate files).
>I thought a broadcaster was just a way to keep attrs in sync?
It was, which was why commands were invented, so we didn't have to keep copying
attributes to menuitems and keys that never saw the light of day.
> menuitem's only going to work with a bona fide <command>, right?

Yes.  But why does it work now?  How does it end up actually doing anything?  If
I understood what it does now, I could replicate with a command, but as it is, I
have no idea what to put in oncommand...
It works now because command= doesn't care what kind of element it points to.
114     <command id="button_delete" oncommand="goDoCommand('button_delete');"/>
128   <broadcaster id="button_delete" disabled="true"/>

So when two elements have the same id, which one wins?
jag, the first one wins (though really, we ought to flag that whole thing as an
error, perhaps).

I talked to dmose, and the cmd_delete thing doesn't use the broadcaster as a
command target, so we're safe there.
Assignee: nobody → bzbarsky
Target Milestone: --- → mozilla1.8alpha3
Fixed.
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Verified FIXED with build 2004-08-23-08 on Windows XP, Seamonkey trunk, using
http://bugzilla.mozilla.org/attachment.cgi?id=155634&action=view as the testcase.
Status: RESOLVED → VERIFIED
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: xptoolkit.widgets
Crash Signature: [@ AppendUTF8toUTF16 ]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: