sboag 2002/06/08 13:34:21 Modified: java/src/org/apache/xpath XPathContext.java Log: Add resets for m_contextNodeLists, etc. It might be possible that these are redundent with the same thing being done somewhere else, but given http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6021 I suspect that this really does need to be done here. It would explain any problems that might have been reported after an exception has been thrown, and the Transformer is being reused. Revision Changes Path 1.39 +22 -2 xml-xalan/java/src/org/apache/xpath/XPathContext.java Index: XPathContext.java =================================================================== RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/XPathContext.java,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- XPathContext.java 9 May 2002 21:19:40 -0000 1.38 +++ XPathContext.java 8 Jun 2002 20:34:21 -0000 1.39 @@ -114,7 +114,7 @@ import org.apache.xpath.axes.DescendantIterator; -// For RTF handling. +// For handling. import org.apache.xml.dtm.ref.sax2dtm.SAX2RTFDTM; /** @@ -387,6 +387,26 @@ m_dtmManager = DTMManager.newInstance( org.apache.xpath.objects.XMLStringFactoryImpl.getFactory()); + + m_saxLocations = new SourceLocator[RECURSIONLIMIT]; + m_saxLocationsTop = 0; + + m_axesIteratorStack = new Stack(); + m_contextNodeLists = new Stack(); + m_currentExpressionNodes = new int[RECURSIONLIMIT]; + m_currentExpressionNodesFirstFree = 0; + m_currentNodes = new int[RECURSIONLIMIT]; + m_currentNodesFirstFree = 0; + m_iteratorRoots = new NodeVector(); + m_predicatePos = new IntStack(); + m_predicateRoots = new NodeVector(); + m_prefixResolvers = new PrefixResolver[RECURSIONLIMIT]; + int m_prefixResolversTop = 0; + + m_prefixResolvers[m_prefixResolversTop++] = null; + m_currentNodes[m_currentNodesFirstFree++] = DTM.NULL; + m_currentNodes[m_currentExpressionNodesFirstFree++] = DTM.NULL; + m_saxLocations[m_saxLocationsTop++] = null; } /** The current stylesheet locator. */ @@ -883,13 +903,13 @@ /** A stack of the current sub-expression nodes. */ private NodeVector m_iteratorRoots = new NodeVector(); - /** A stack of the current sub-expression nodes. */ private NodeVector m_predicateRoots = new NodeVector(); /** A stack of the current sub-expression nodes. */ private int m_currentExpressionNodes[] = new int[RECURSIONLIMIT]; protected int m_currentExpressionNodesFirstFree = 0; + public int[] getCurrentExpressionNodeStack() { return m_currentExpressionNodes; } public void setCurrentExpressionNodeStack(int[] nv) { m_currentExpressionNodes = nv; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
