[
https://issues.apache.org/jira/browse/FOP-3349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joao Goncalves reassigned FOP-3349:
-----------------------------------
Assignee: Joao Goncalves
> NullPointerException in LineLayoutManager's line breaking when a line
> overflows beside a float wider than the measure
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: FOP-3349
> URL: https://issues.apache.org/jira/browse/FOP-3349
> Project: FOP
> Issue Type: Bug
> Components: layout/line
> Affects Versions: 2.11, main
> Reporter: Jason Harrop
> Assignee: Joao Goncalves
> Priority: Major
>
> LineLayoutManager.LineBreakingAlgorithm.updateData2 reports a line that does
> not fit through curChildLM:
> {code:java}
> if (curChildLM.getFObj() == null) {
> eventProducer.lineOverflows(this, getFObj().getName(), ...);
> } else {
> eventProducer.lineOverflows(this, curChildLM.getFObj().getName(), ...);
> }
> {code}
> On the float re-layout pass (PageBreaker.handleFloatLayout), curChildLM is
> null, so a line that overflows there throws a NullPointerException, and the
> document fails, instead of the overflow being reported.
> h3. To reproduce
> {code:xml}
> <fo:block><fo:float float="start"><fo:block-container width="480pt"
> height="200pt">
> <fo:block> </fo:block></fo:block-container></fo:float></fo:block>
> <fo:block><fo:block>block child</fo:block><fo:inline>Overflowing
>
> ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ</fo:inline></fo:block>
> {code}
> in a region 425pt wide. It fails on 2.11 and on main.
> h3. Fix
> Test curChildLM == null as well as getFObj() == null, so the overflow is
> reported against the line manager's own FO, as it already is when the child
> has no FO. The code only reports; layout does not change. Layout test
> float_overflow_relayout.xml fails before with the NullPointerException.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)