tmiller 2002/10/09 14:01:36
Modified: java/src/org/apache/xalan/xsltc/dom UnionIterator.java
Log:
bug fix 12644, Santiago found that the clone iterator was doing a shallow copy
Revision Changes Path
1.13 +13 -3
xml-xalan/java/src/org/apache/xalan/xsltc/dom/UnionIterator.java
Index: UnionIterator.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/UnionIterator.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- UnionIterator.java 24 Apr 2002 17:03:16 -0000 1.12
+++ UnionIterator.java 9 Oct 2002 21:01:35 -0000 1.13
@@ -81,7 +81,7 @@
private final static class LookAheadIterator {
public int node, markedNode;
- public final NodeIterator iterator;
+ public NodeIterator iterator;
public LookAheadIterator(NodeIterator iterator) {
this.iterator = iterator;
@@ -92,6 +92,14 @@
return node;
}
+ public LookAheadIterator cloneIterator() {
+ final LookAheadIterator clone =
+ new LookAheadIterator(iterator.cloneIterator());
+ clone.node = node;
+ clone.markedNode = node;
+ return clone;
+ }
+
public void setMark() {
markedNode = node;
iterator.setMark();
@@ -124,7 +132,9 @@
new LookAheadIterator[_heap.length];
try {
final UnionIterator clone = (UnionIterator)super.clone();
- System.arraycopy(_heap, 0, heapCopy, 0, _heap.length);
+ for (int i = 0; i < _free; i++) {
+ heapCopy[i] = _heap[i].cloneIterator();
+ }
clone.setRestartable(false);
clone._heap = heapCopy;
return clone.reset();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]