You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@locus.apache.org on 2000/08/03 17:27:48 UTC

cvs commit: xml-xalan/c/src/XSLT Stylesheet.cpp StylesheetHandler.cpp

dbertoni    00/08/03 08:27:46

  Modified:    c/src/XSLT Stylesheet.cpp StylesheetHandler.cpp
  Log:
  Fixed leaks.
  
  Revision  Changes    Path
  1.27      +6 -1      xml-xalan/c/src/XSLT/Stylesheet.cpp
  
  Index: Stylesheet.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/Stylesheet.cpp,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- Stylesheet.cpp	2000/07/25 14:52:12	1.26
  +++ Stylesheet.cpp	2000/08/03 15:27:44	1.27
  @@ -169,10 +169,15 @@
   	using std::for_each;
   #endif
   
  -	// Clean up all entries in the vector.
  +	// Clean up all entries in the imports vector.
   	for_each(m_imports.begin(),
   			 m_imports.end(),
   			 DeleteFunctor<Stylesheet>());
  +
  +	// Clean up all entries in the include vector.
  +	for_each(m_includeStack.begin(),
  +			 m_includeStack.end(),
  +			 DeleteFunctor<XMLURL>());
   
   	// Clean up the atribute sets vector
   	for_each(m_attributeSets.begin(),
  
  
  
  1.36      +16 -2     xml-xalan/c/src/XSLT/StylesheetHandler.cpp
  
  Index: StylesheetHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetHandler.cpp,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- StylesheetHandler.cpp	2000/07/13 22:22:41	1.35
  +++ StylesheetHandler.cpp	2000/08/03 15:27:45	1.36
  @@ -1149,7 +1149,7 @@
   			URLAutoPtrType	hrefUrl = m_constructionContext.getURLFromString(href, includeStack.back()->getURLText());
   			assert(hrefUrl.get() != 0);
   
  -			Stylesheet::URLStackType& importStack = m_stylesheet.getStylesheetRoot().getImportStack();
  +			Stylesheet::URLStackType&	importStack = m_stylesheet.getStylesheetRoot().getImportStack();
   
   			if(stackContains(importStack, *hrefUrl.get()))
   			{
  @@ -1160,6 +1160,9 @@
   
   			importStack.push_back(hrefUrl.get());
   
  +			// We have to release this right now, since the stylesheet
  +			// will delete it during its destructor.  However, once we
  +			// pop it off the stack, we'll need to delete it.
   			const XMLURL* const		hrefUrlptr = hrefUrl.release();
   
   			const XalanDOMString	theImportURI(hrefUrlptr->getURLText());
  @@ -1182,8 +1185,12 @@
   			// release the auto_ptr.
   			importedStylesheet.release();
   
  +			assert(importStack.back() == hrefUrlptr);
   			importStack.pop_back();
  -			
  +
  +			// The stylesheet is now done with it, so delete it...
  +			delete hrefUrlptr;
  +
   			m_stylesheet.setXSLTNamespaceURI(saved_XSLNameSpaceURL);
   		}
   		else if(!isAttrOK(aname, atts, i))
  @@ -1235,11 +1242,18 @@
   
   			m_stylesheet.getIncludeStack().push_back(hrefUrl.get());
   
  +			// We have to release this right now, since the stylesheet
  +			// will delete it during its destructor.  However, once we
  +			// pop it off the stack, we'll need to delete it.
   			const XMLURL* const		hrefUrlptr = hrefUrl.release();
   
   			m_constructionContext.parseXML(*hrefUrlptr, this, &m_stylesheet);
   
  +			assert(m_stylesheet.getIncludeStack().back() == hrefUrlptr);
   			m_stylesheet.getIncludeStack().pop_back();
  +
  +			// The stylesheet is now done with it, so delete it...
  +			delete hrefUrlptr;
   		}
   		else if(!isAttrOK(aname, atts, i))
   		{