On Wed, Dec 28, 2005 at 05:17:03AM +0100, [EMAIL PROTECTED] wrote:
> For the NPE fix see http://svn.apache.org/viewcvs?rev=359383&view=rev
>
> I didn't manage to construct a small test case for the NPE. Any attempts to
> cut
> down the large param-tidy.fo to a reasonable size but still exhibiting the
> problem failed. I must be missing something. Any help / suggestions
> appreciated.
The test file linearea_nonempty_1.xml reproduces the NPE (without
Manuel's fix).
lastPos being null means that in InlineLM.addAreas, the iterator
parentIter passed to it did not contain any area-generating
positions. In this case, the paragraph is:
Object [0]= LineLayoutManager$Paragraph (id=96)
Object [0]= KnuthGlue (id=104)
Object [1]= KnuthPenalty (id=108)
Object [2]= KnuthGlue (id=110)
Object [3]= KnuthInlineBox (id=111)
Object [4]= KnuthPenalty (id=114)
Object [5]= KnuthGlue (id=115)
Object [6]= KnuthPenalty (id=116)
There are two lines: from 0 to 1, and from 2 to 6.
Line 1 is the problem. In LineLM.addInlineArea (a new method, which I
recently extracted from LineLM.addAreas) non-boxes are skipped, so
that iStartElement becomes 3, resulting in an empty iterator.
I do not understand how the line breaking algorithm can produce a line
consisting of only a glue and a penalty.
Regards, Simon
--
Simon Pepping
home page: http://www.leverkruid.nl