xalan-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mk...@apache.org
Subject cvs commit: xml-xalan/java/src/org/apache/xpath/axes AxesWalker.java ChildTestIterator.java MatchPatternIterator.java OneStepIterator.java ReverseAxesWalker.java
Date Fri, 06 Dec 2002 15:39:01 GMT
mkwan       2002/12/06 07:39:01

  Modified:    java/src/org/apache/xpath/axes AxesWalker.java
                        ChildTestIterator.java MatchPatternIterator.java
                        OneStepIterator.java ReverseAxesWalker.java
  Log:
  Fix the memory leak problem in Bug 6075.
  
  In the detach() method, null out the fields in the iterators that will
  be reassigned a value upon the next usage. This change fixes the problem
  that the iterators in the IteratorPool can indirectly reference the
  TransformerImpl object.
  
  Revision  Changes    Path
  1.25      +1 -0      xml-xalan/java/src/org/apache/xpath/axes/AxesWalker.java
  
  Index: AxesWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/AxesWalker.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- AxesWalker.java	27 Jun 2002 14:50:54 -0000	1.24
  +++ AxesWalker.java	6 Dec 2002 15:39:00 -0000	1.25
  @@ -216,6 +216,7 @@
     { 
     	m_currentNode = DTM.NULL;
     	m_dtm = null;
  +  	m_traverser = null;
     	m_isFresh = true;
     	m_root = DTM.NULL;
     }
  
  
  
  1.15      +17 -0     xml-xalan/java/src/org/apache/xpath/axes/ChildTestIterator.java
  
  Index: ChildTestIterator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/ChildTestIterator.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ChildTestIterator.java	22 Mar 2002 01:04:42 -0000	1.14
  +++ ChildTestIterator.java	6 Dec 2002 15:39:01 -0000	1.15
  @@ -198,5 +198,22 @@
       return org.apache.xml.dtm.Axis.CHILD;
     }
   
  +  /**
  +   *  Detaches the iterator from the set which it iterated over, releasing
  +   * any computational resources and placing the iterator in the INVALID
  +   * state. After<code>detach</code> has been invoked, calls to
  +   * <code>nextNode</code> or<code>previousNode</code> will raise
the
  +   * exception INVALID_STATE_ERR.
  +   */
  +  public void detach()
  +  {   
  +    if(m_allowDetach)
  +    {
  +      m_traverser = null;
  +      
  +      // Always call the superclass detach last!
  +      super.detach();
  +    }
  +  }
   
   }
  
  
  
  1.5       +18 -0     xml-xalan/java/src/org/apache/xpath/axes/MatchPatternIterator.java
  
  Index: MatchPatternIterator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/MatchPatternIterator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MatchPatternIterator.java	22 Mar 2002 01:04:42 -0000	1.4
  +++ MatchPatternIterator.java	6 Dec 2002 15:39:01 -0000	1.5
  @@ -205,6 +205,24 @@
       super.setRoot(context, environment);
       m_traverser = m_cdtm.getAxisTraverser(m_superAxis);
     }
  +
  +  /**
  +   *  Detaches the iterator from the set which it iterated over, releasing
  +   * any computational resources and placing the iterator in the INVALID
  +   * state. After<code>detach</code> has been invoked, calls to
  +   * <code>nextNode</code> or<code>previousNode</code> will raise
the
  +   * exception INVALID_STATE_ERR.
  +   */
  +  public void detach()
  +  {    
  +    if(m_allowDetach)
  +    {
  +      m_traverser = null;
  +      
  +      // Always call the superclass detach last!
  +      super.detach();
  +    }
  +  }
     
     /**
      * Get the next node via getNextXXX.  Bottlenecked for derived class override.
  
  
  
  1.10      +19 -0     xml-xalan/java/src/org/apache/xpath/axes/OneStepIterator.java
  
  Index: OneStepIterator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/OneStepIterator.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- OneStepIterator.java	13 Nov 2002 22:08:21 -0000	1.9
  +++ OneStepIterator.java	6 Dec 2002 15:39:01 -0000	1.10
  @@ -76,6 +76,25 @@
         m_iterator = m_cdtm.getAxisIterator(m_axis);
       m_iterator.setStartNode(m_context);
     }
  +
  +  /**
  +   *  Detaches the iterator from the set which it iterated over, releasing
  +   * any computational resources and placing the iterator in the INVALID
  +   * state. After<code>detach</code> has been invoked, calls to
  +   * <code>nextNode</code> or<code>previousNode</code> will raise
the
  +   * exception INVALID_STATE_ERR.
  +   */
  +  public void detach()
  +  {    
  +    if(m_allowDetach)
  +    {
  +      if(m_axis > -1)
  +        m_iterator = null;
  +      
  +      // Always call the superclass detach last!
  +      super.detach();
  +    }
  +  }
     
     /**
      * Get the next node via getFirstAttribute && getNextAttribute.
  
  
  
  1.11      +11 -0     xml-xalan/java/src/org/apache/xpath/axes/ReverseAxesWalker.java
  
  Index: ReverseAxesWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/axes/ReverseAxesWalker.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ReverseAxesWalker.java	22 Mar 2002 01:04:43 -0000	1.10
  +++ ReverseAxesWalker.java	6 Dec 2002 15:39:01 -0000	1.11
  @@ -100,6 +100,17 @@
       m_iterator = getDTM(root).getAxisIterator(m_axis);
       m_iterator.setStartNode(root);
     }
  +
  +  /**
  +   * Detaches the walker from the set which it iterated over, releasing
  +   * any computational resources and placing the iterator in the INVALID
  +   * state.
  +   */
  +  public void detach()
  +  {
  +    m_iterator = null;
  +    super.detach();
  +  }
     
     /**
      * Get the next node in document order on the axes.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org


Mime
View raw message