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
@@ -649,8 +649,8 @@ public class LineLayoutManager extends InlineStackingLayoutManager | |||
Paragraph lastPar = null; | |||
InlineLevelLayoutManager curLM = (InlineLevelLayoutManager) getChildLM(); | |||
while (curLM != null) { | |||
InlineLevelLayoutManager curLM; | |||
while ((curLM = (InlineLevelLayoutManager) getChildLM()) != null) { | |||
List inlineElements = curLM.getNextKnuthElements(inlineLC, effectiveAlignment); | |||
if (inlineElements == null || inlineElements.size() == 0) { | |||
/* curLM.getNextKnuthElements() returned null or an empty list; | |||
@@ -747,7 +747,6 @@ public class LineLayoutManager extends InlineStackingLayoutManager | |||
} | |||
} | |||
} // end of loop over returnedList | |||
curLM = (InlineLevelLayoutManager) getChildLM(); | |||
} | |||
if (lastPar != null) { | |||
@@ -1149,6 +1148,7 @@ public class LineLayoutManager extends InlineStackingLayoutManager | |||
} | |||
/** {@inheritDoc} */ | |||
@Override | |||
public List getChangedKnuthElements(List oldList, int alignment) { | |||
List<KnuthElement> returnList = new LinkedList<KnuthElement>(); | |||
for (int p = 0; p < knuthParagraphs.size(); p++) { | |||
@@ -1419,7 +1419,7 @@ public class LineLayoutManager extends InlineStackingLayoutManager | |||
private void addInlineArea(LayoutContext context, LineBreakPosition lbp, | |||
boolean isLastPosition) { | |||
KnuthSequence seq = (KnuthSequence) knuthParagraphs.get(lbp.parIndex); | |||
KnuthSequence seq = knuthParagraphs.get(lbp.parIndex); | |||
int startElementIndex = lbp.startIndex; | |||
int endElementIndex = lbp.getLeafPos(); | |||
@@ -0,0 +1,46 @@ | |||
<?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> |