Michael Kainzbauer created FOP-3069:
---------------------------------------

             Summary: Empty <fo:table.body> results in infinite loop when 
strict-validation is set to false
                 Key: FOP-3069
                 URL: https://issues.apache.org/jira/browse/FOP-3069
             Project: FOP
          Issue Type: Bug
          Components: fo/unqualified
    Affects Versions: 2.7, 2.6, 2.4, 2.3, 2.2, 2.1, 2.0, 1.1
            Reporter: Michael Kainzbauer


+_Since Apache FOP 1.1 (not reproducible in 1.0)_+

When disabling strict-validation, ApacheFOP will loop infinitely when a 
<fo:table.body> is empty, e.g.: <fo:table.body/>

As a result in class

{color:#57d9a3}{{ 
org.apache.fop.layoutmgr.BlockContainerLayoutManager.getNextKnuthElements(LayoutContext
 context, int alignment)}}{color}

(line 111)

is called infinitely.

Yes, the XML-FO is incorrect and not according to the standard, but this is an 
issue that can cause real trouble when the given conditions are met. Turning on 
strict-validation will result in an error with a clear and understandable error 
message:
{quote}{color:#57d9a3}{{Error on line 26 column 29 }}{color}
{color:#57d9a3}{{  SXCH0003  org.apache.fop.fo.ValidationException: 
"fo:table-body" is missing child}}{color}
{color:#57d9a3}{{  elements. Required content model: marker* 
(table-row+|table-cell+) (Siehe Position 26:29).}}{color}
{color:#57d9a3}{{  Caused by org.apache.fop.fo.ValidationException: null:26:29: 
"fo:table-body" is missing}}{color}
{color:#57d9a3}{{  child elements. Required content model: marker* 
(table-row+|table-cell+) (See position 26:29)}}{color}
{quote}
Example XML-FO:

{color:#57d9a3}{{<?xml version="1.0" encoding="UTF-8"?>}}
{{<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>}}
{{<fo:layout-master-set>}}
{{<fo:simple-page-master master-name="A4-main" page-width="210mm" 
page-height="297mm">}}
{{<fo:region-body margin-bottom="10mm" margin-left="20mm" margin-right="5mm" 
margin-top="10mm"/>}}
{{<fo:region-before extent="10mm" region-name="main-reg-before"/>}}
{{<fo:region-after extent="10mm" region-name="main-reg-after"/>}}
{{</fo:simple-page-master>}}
{{<fo:page-sequence-master master-name="basic">}}
{{<fo:repeatable-page-master-alternatives>}}
{{<fo:conditional-page-master-reference master-reference="A4-main" 
page-position="any"/>}}
{{</fo:repeatable-page-master-alternatives>}}
{{</fo:page-sequence-master>}}
{{</fo:layout-master-set>}}
{{<fo:page-sequence master-reference="basic">}}
{{<fo:static-content flow-name="main-reg-before">}}
{{<fo:block/>}}
{{</fo:static-content>}}
{{<fo:static-content flow-name="main-reg-after">}}
{{<fo:block/>}}
{{</fo:static-content>}}
{{<fo:flow flow-name="xsl-region-body">}}
{{<fo:block-container>}}
{{<fo:block-container>}}
{{<fo:table>}}
{{<fo:table-body/>}}
{{</fo:table>}}
{{</fo:block-container>}}
{{</fo:block-container>}}
{{</fo:flow>}}
{{</fo:page-sequence>}}
{{</fo:root>}}{color}

 

 



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to