Closed Bug 847368 Opened 10 years ago Closed 8 months ago

"ASSERTION: Shouldn't be incomplete if availableBSize is UNCONSTRAINED." with :first-letter float and page-break-inside:avoid

Categories

(Core :: Layout: Block and Inline, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
103 Branch
Tracking Status
firefox-esr91 --- wontfix
firefox-esr102 --- wontfix
firefox101 --- wontfix
firefox102 --- wontfix
firefox103 --- fixed

People

(Reporter: MatsPalmgren_bugz, Assigned: TYLin)

References

(Blocks 1 open bug)

Details

(Keywords: assertion)

Attachments

(1 file)

STEPS TO REPRODUCE
1. load the testcase in bug 847209 (note that it might also abort due to
   a later fatal assertion unless you have the fix for bug 847209)

ACTUAL RESULTS
###!!! ASSERTION: Shouldn't be incomplete if availableHeight is UNCONSTRAINED.: 'aReflowState.availableHeight != NS_UNCONSTRAINEDSIZE', file layout/generic/nsBlockFrame.cpp, line 1440
Summary: "ASSERTION: Shouldn't be incomplete if availableHeight is UNCONSTRAINED." with :first-letter float and page-break-inside:avoid → "ASSERTION: Shouldn't be incomplete if availableBSize is UNCONSTRAINED." with :first-letter float and page-break-inside:avoid
Blocks: 1775003

As the comment in the moved hunk said, a floating first letter frame's
incomplete status means that there is more content to be reflowed on the line.
If the block containing the floating first letter has break-inside:avoid
style, the old code would call SetInlineLineBreakBeforeAndReset(), and the
block's parent frame would misinterpret the status as "this block needs to be
push to the next fragment" even if we are not in a paginated environment.
Hence the assertion "Shouldn't be incomplete if availableBSize is
UNCONSTRAINED."

To fix this bug, we can reset the float's reflow status for a first letter frame
before checking ShouldAvoidBreakInside.

Assignee: nobody → aethanyc
Status: NEW → ASSIGNED
Pushed by aethanyc@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/5c5e1891414c
Reset floating first letter's reflow status before checking break-inside:avoid. r=emilio
Status: ASSIGNED → RESOLVED
Closed: 8 months ago
Resolution: --- → FIXED
Target Milestone: --- → 103 Branch
You need to log in before you can comment on or make changes to this bug.