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]

Reply via email to