Closed Bug 262310 Opened 20 years ago Closed 20 years ago

infinite loop after reordering thread pane columns with drag drop

Categories

(Core :: XUL, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: Bienvenu, Assigned: bryner)

Details

Attachments

(1 file)

I'm pretty sure I have the latest fixes. If I reorder my thread pane columns, I
end up in an infinite loop here, in particular, nsSprocketLayout::GetAscent
loops forever, I guess because of a circular list of next boxes...

nsIFrame::IsBoxFrame() line 1279 + 20 bytes
nsIFrame::GetNextBox(nsIFrame * * 0x0012e764) line 1326 + 20 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x030fe920, nsBoxLayoutState & {...}, int & 0x000000b4) line 1554
nsBoxFrame::GetAscent(nsBoxFrame * const 0x030fe920, nsBoxLayoutState & {...},
int & 0x000000b4) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x030fe868, nsBoxLayoutState & {...}, int & 0x00000000) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x030fe868, nsBoxLayoutState & {...},
int & 0x00000000) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x030fe72c, nsBoxLayoutState & {...}, int & 0x00000000) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x030fe72c, nsBoxLayoutState & {...},
int & 0x00000000) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x030fe674, nsBoxLayoutState & {...}, int & 0x00000000) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x030fe674, nsBoxLayoutState & {...},
int & 0x00000000) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x030fe5bc, nsBoxLayoutState & {...}, int & 0x00000000) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x030fe5bc, nsBoxLayoutState & {...},
int & 0x00000000) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x0309c180, nsBoxLayoutState & {...}, int & 0x0000012c) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x0309c180, nsBoxLayoutState & {...},
int & 0x0000012c) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x0303a298, nsBoxLayoutState & {...}, int & 0x000000b4) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x0303a298, nsBoxLayoutState & {...},
int & 0x000000b4) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x0303a20c, nsBoxLayoutState & {...}, int & 0x00000000) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x0303a20c, nsBoxLayoutState & {...},
int & 0x00000000) line 980 + 38 bytes
nsSprocketLayout::GetAscent(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x0298d988, nsBoxLayoutState & {...}, int & 0x000000b4) line 1539
nsBoxFrame::GetAscent(nsBoxFrame * const 0x0298d988, nsBoxLayoutState & {...},
int & 0x000000b4) line 980 + 38 bytes
nsSprocketLayout::Layout(nsSprocketLayout * const 0x0292ce48, nsIFrame *
0x0298d988, nsBoxLayoutState & {...}) line 257
nsBoxFrame::DoLayout(nsBoxFrame * const 0x0298d988, nsBoxLayoutState & {...})
line 1098 + 34 bytes
nsIFrame::Layout(nsBoxLayoutState & {...}) line 799
nsStackLayout::Layout(nsStackLayout * const 0x02c15f98, nsIFrame * 0x0298d6a8,
nsBoxLayoutState & {...}) line 316
nsBoxFrame::DoLayout(nsBoxFrame * const 0x0298d6a8, nsBoxLayoutState & {...})
line 1098 + 34 bytes
nsIFrame::Layout(nsBoxLayoutState & {...}) line 799
nsBoxFrame::Reflow(nsBoxFrame * const 0x0298d6a8, nsPresContext * 0x02a28c08,
nsHTMLReflowMetrics & {...}, const nsHTMLReflowState & {...}, unsigned int &
0x00000000) line 854
Attached patch patchSplinter Review
fixes two problems in the box ordinal code:

- newPrevSib should never be set to aChild.  It was being set to aChild in the
case where aChild is being moved to an ordinal that already has a box.	For
example, if this method is called for the box marked A below:

1 1 1 2 2 2
  B A

we should keep newPrevSib set to the box marked B.

- If aChild used to be at the front of the list, but isn't anymore, then we
need to call SetFrames to make aChild's next sibling the first child.
Attachment #160686 - Flags: superreview?(roc)
Attachment #160686 - Flags: review?(darin)
thx, Brian, that fixes the problem for me.
Attachment #160686 - Flags: superreview?(roc) → superreview+
Attachment #160686 - Flags: review?(darin) → review+
checked in
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: