That's exactly why we need a good regression test facility. I apologize
for not being more thorough. I'll probably have time on Thursday to look
into it if noone beats me to it. 

I also thought about reusing the static areas but as soon as there are
things like the page number or another reference, things get complicated.
I don't think it's worth the trouble to write code that can detect if a
static area is invariable.

On 25.10.2004 17:47:09 Luca Furini wrote:
> Jeremias Maerki wrote:
> 
> > jeremias    2004/10/10 04:21:29
> >
> >   Modified:    src/java/org/apache/fop/layoutmgr LineLayoutManager.java
> >   Log:
> >   This is supposed to fix a problem that surfaced with Finn's latest
> > change in PageSequence. There was an ArrayIndexOutOfBoundsException here in
> > LineLayoutManager when a static region was layouted for the second page
> > (instance is reused). It seems to me that "iCurrParIndex" could be made a
> > method-local variable instead of an instance variable.
> 
> It took me a while to notice that these changes cause another problem for
> blocks containing preserved linefeeds and whose lines are parted on
> different pages. For these blocks, the array named knuthParagraphs has
> more than one element (the block will generate more than one paragraph)
> and the method LineLM.addAreas() is called more than once, so it isn't
> always right to set iCurrParIndex to 0. I'm attaching a fo file showing
> this problem.
> 
> So, iCurrParIndex must be set to 0 in addAreas only for LineLM descendant
> of a StaticContentLM.
> But maybe it isn't necessary to call addAreas more than once for static
> content: as the static content is repeated on each page, wouldn't it be
> better to store the static area sub-tree and re-use it?


Jeremias Maerki

Reply via email to