Author: lbernardo
Date: Fri Jul 12 23:02:02 2013
New Revision: 1502722
URL: http://svn.apache.org/r1502722
Log:
FOP-2271: XSL Infinite loop; patch submitted by Simon Steiner.
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOTreeBuilder.java
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOTreeBuilder.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOTreeBuilder.java?rev=1502722&r1=1502721&r2=1502722&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOTreeBuilder.java
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/FOTreeBuilder.java Fri Jul
12 23:02:02 2013
@@ -83,6 +83,7 @@ public class FOTreeBuilder extends Defau
private boolean empty = true;
private int depth;
+ private boolean errorinstart;
/**
* <code>FOTreeBuilder</code> constructor
@@ -172,20 +173,28 @@ public class FOTreeBuilder extends Defau
public void startElement(String namespaceURI, String localName, String
rawName,
Attributes attlist) throws SAXException {
this.depth++;
- delegate.startElement(namespaceURI, localName, rawName, attlist);
+ errorinstart = false;
+ try {
+ delegate.startElement(namespaceURI, localName, rawName, attlist);
+ } catch (SAXException e) {
+ errorinstart = true;
+ throw e;
+ }
}
/** {@inheritDoc} */
public void endElement(String uri, String localName, String rawName)
throws SAXException {
- this.delegate.endElement(uri, localName, rawName);
- this.depth--;
- if (depth == 0) {
- if (delegate != mainFOHandler) {
- //Return from sub-handler back to main handler
- delegate.endDocument();
- delegate = mainFOHandler;
- delegate.endElement(uri, localName, rawName);
+ if (!errorinstart) {
+ this.delegate.endElement(uri, localName, rawName);
+ this.depth--;
+ if (depth == 0) {
+ if (delegate != mainFOHandler) {
+ //Return from sub-handler back to main handler
+ delegate.endDocument();
+ delegate = mainFOHandler;
+ delegate.endElement(uri, localName, rawName);
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]