Closed Bug 264937 Opened 20 years ago Closed 19 years ago

:first-letter causes crash when using RTL direction [@ nsTextFrame::MeasureText]

Categories

(Core :: Layout: Text and Fonts, defect)

defect
Not set
critical

Tracking

()

RESOLVED FIXED

People

(Reporter: MatsPalmgren_bugz, Assigned: mkaply)

References

Details

(Keywords: crash, rtl, testcase)

Crash Data

Attachments

(3 files)

:first-letter causes crash when using RTL direction

STEPS TO REPRODUCE:
1. load testcase
2. change to RTL direction, I paste this one-liner in the window:

javascript:(function(){if (document.dir=='rtl') document.dir='ltr'; else
document.dir='rtl';})()

3. resize the window - kaboom


The problem is that we have a frame tree like this:

             parent
firstLetter1   <-   Text1
   ^   |             |
   |   |             |
 prev/next-in-flow   | nextBidi (property)
   |   |             |
   |   v             v
firstLetter2   <-   Text2

Then we hit nsBlockFrame::DeleteNextInFlowChild( ,firstLetter2)
which leaves nextBidi dangling...

The reparenting of Text2 is done by nsFirstLetterFrame::DrainOverflowFrames().
Then nsBidiPresUtils::EnsureBidiContinuation() sets up the nextBidi.

Detecting the situation in DeleteNextInFlowChild and removing nextBidi
fixes the bug but I suspect this is not the fix we want...
I also tried fiddling with EnsureBidiContinuation to avoid the situation in
the first place, but that led to assertions going off and general layout havoc.

Any ideas?
Attached file Testcase
Note also bug 198928 
Blocks: 198928
-> default owner
Assignee: mats.palmgren → mkaply
Blocks: 288467
Confirming on OS X => All/All
OS: Linux → All
Hardware: PC → All
Don't know if its of interest, the bug is reproducible here in another setting. Simplified testcase2 attached.

Steps to reproduce: 
1. Open the testcase2 in a non-maximized window (the second paragraph content is not visible apart from the first-letter)
2. Increase text zoom by one step (the last line of the first paragraph is overflowing its boundary)
3. Size the window and resize it (Fx crashes)

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20051222 Firefox/1.6a1
Mozilla/5.0 (Macintosh; U; PPC MacOS X Mach-O; de, rv:1.8) Gecko/20051111 Firefox/1.5
Flags: blocking1.9a1+
Depends on: 299065
No longer blocks: 198928
Depends on: 198928
No longer blocks: 288467
Following the fix of bug 299065, I no longer crash with either of the testcases here. The remaining issues (missing/reversed text) are covered by bug 198928, so I'm resolving this one FIXED.
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Mass-assigning the new rtl keyword to RTL-related (see bug 349193).
Keywords: rtl
Component: Layout: BiDi Hebrew & Arabic → Layout: Text
QA Contact: zach → layout.fonts-and-text
layout/generic/crashtests/264937-1.html
http://hg.mozilla.org/mozilla-central/rev/b0337b6287f3
Flags: in-testsuite+
Crash Signature: [@ nsTextFrame::MeasureText]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: