Endless loop with empty fo:inline. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1137921 13f79535-47bb-0310-9956-ffa450edef68tags/fop-1_1rc1old
Paragraph lastPar = null; | Paragraph lastPar = null; | ||||
InlineLevelLayoutManager curLM = (InlineLevelLayoutManager) getChildLM(); | |||||
while (curLM != null) { | |||||
InlineLevelLayoutManager curLM; | |||||
while ((curLM = (InlineLevelLayoutManager) getChildLM()) != null) { | |||||
List inlineElements = curLM.getNextKnuthElements(inlineLC, effectiveAlignment); | List inlineElements = curLM.getNextKnuthElements(inlineLC, effectiveAlignment); | ||||
if (inlineElements == null || inlineElements.size() == 0) { | if (inlineElements == null || inlineElements.size() == 0) { | ||||
/* curLM.getNextKnuthElements() returned null or an empty list; | /* curLM.getNextKnuthElements() returned null or an empty list; | ||||
} | } | ||||
} | } | ||||
} // end of loop over returnedList | } // end of loop over returnedList | ||||
curLM = (InlineLevelLayoutManager) getChildLM(); | |||||
} | } | ||||
if (lastPar != null) { | if (lastPar != null) { | ||||
} | } | ||||
/** {@inheritDoc} */ | /** {@inheritDoc} */ | ||||
@Override | |||||
public List getChangedKnuthElements(List oldList, int alignment) { | public List getChangedKnuthElements(List oldList, int alignment) { | ||||
List<KnuthElement> returnList = new LinkedList<KnuthElement>(); | List<KnuthElement> returnList = new LinkedList<KnuthElement>(); | ||||
for (int p = 0; p < knuthParagraphs.size(); p++) { | for (int p = 0; p < knuthParagraphs.size(); p++) { | ||||
private void addInlineArea(LayoutContext context, LineBreakPosition lbp, | private void addInlineArea(LayoutContext context, LineBreakPosition lbp, | ||||
boolean isLastPosition) { | boolean isLastPosition) { | ||||
KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(lbp.parIndex); | |||||
KnuthSequence seq = knuthParagraphs.get(lbp.parIndex); | |||||
int startElementIndex = lbp.startIndex; | int startElementIndex = lbp.startIndex; | ||||
int endElementIndex = lbp.getLeafPos(); | int endElementIndex = lbp.getLeafPos(); | ||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!-- | |||||
Licensed to the Apache Software Foundation (ASF) under one or more | |||||
contributor license agreements. See the NOTICE file distributed with | |||||
this work for additional information regarding copyright ownership. | |||||
The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
(the "License"); you may not use this file except in compliance with | |||||
the License. You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
--> | |||||
<!-- $Id$ --> | |||||
<testcase> | |||||
<info> | |||||
<p> | |||||
This test checks an empty fo:inline. This used to create an endless loop | |||||
so we're checking that here so it doesn't happen again. | |||||
</p> | |||||
</info> | |||||
<fo> | |||||
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg"> | |||||
<fo:layout-master-set> | |||||
<fo:simple-page-master master-name="normal" page-width="5in" page-height="5in"> | |||||
<fo:region-body/> | |||||
</fo:simple-page-master> | |||||
</fo:layout-master-set> | |||||
<fo:page-sequence master-reference="normal" white-space-collapse="true"> | |||||
<fo:flow flow-name="xsl-region-body"> | |||||
<fo:block>No endless loop, please: <fo:inline/></fo:block> | |||||
</fo:flow> | |||||
</fo:page-sequence> | |||||
</fo:root> | |||||
</fo> | |||||
<checks> | |||||
<element-list category="breaker"> | |||||
<box w="14400"/> | |||||
<skip>3</skip> | |||||
</element-list> | |||||
</checks> | |||||
</testcase> |