You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by dm...@apache.org on 2004/07/26 04:09:26 UTC

cvs commit: xml-xalan/c/src/xalanc/XalanTransformer XalanTransformer.cpp XalanTransformer.hpp

dmitryh     2004/07/25 19:09:26

  Modified:    c/src/xalanc/XalanTransformer XalanTransformer.cpp
                        XalanTransformer.hpp
  Log:
  Fix for Bugzilla #22350
  
  Revision  Changes    Path
  1.16      +36 -20    xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.cpp
  
  Index: XalanTransformer.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- XalanTransformer.cpp	26 Feb 2004 23:07:13 -0000	1.15
  +++ XalanTransformer.cpp	26 Jul 2004 02:09:25 -0000	1.16
  @@ -174,15 +174,10 @@
   	// Initialize Xalan. 
   	XalanAutoPtr<XSLTInit>			initGuard(new XSLTInit);
   	XalanAutoPtr<XSLTInputSource>	inputSourceGuard(new XSLTInputSource);
  +	EnsureFunctionsInstallation		instalGuard; 
  +	instalGuard.install();
   
  -	XalanExtensionsInstaller::installGlobal();
  -	XalanEXSLTCommonFunctionsInstaller::installGlobal();
  -	XalanEXSLTDynamicFunctionsInstaller::installGlobal();
  -	XalanEXSLTMathFunctionsInstaller::installGlobal();
  -	XalanEXSLTSetFunctionsInstaller::installGlobal();
  -	XalanEXSLTStringFunctionsInstaller::installGlobal();
  -	XalanEXSLTDateTimeFunctionsInstaller::installGlobal();
  -
  +	instalGuard.release();
   	s_xsltInit = initGuard.release();
   	s_emptyInputSource = inputSourceGuard.release();
   }
  @@ -192,19 +187,10 @@
   void
   XalanTransformer::terminate()
   {
  -	XalanExtensionsInstaller::uninstallGlobal();
  -	XalanEXSLTCommonFunctionsInstaller::uninstallGlobal();
  -	XalanEXSLTDynamicFunctionsInstaller::uninstallGlobal();
  -	XalanEXSLTMathFunctionsInstaller::uninstallGlobal();
  -	XalanEXSLTSetFunctionsInstaller::uninstallGlobal();
  -	XalanEXSLTStringFunctionsInstaller::uninstallGlobal();
  -	XalanEXSLTDateTimeFunctionsInstaller::uninstallGlobal();
  -
  -#if defined(XALAN_USE_ICU)
  -	XPath::uninstallFunction(XPathFunctionTable::s_formatNumber);
  -#endif
  +	{
  +		EnsureFunctionsInstallation		uninstalGuard;
  +	}
   
  -	// Terminate Xalan and release memory.
   #if defined(XALAN_CANNOT_DELETE_CONST)
   	delete (XSLTInputSource*) s_emptyInputSource;
   	delete (XSLTInit*) s_xsltInit;
  @@ -1296,6 +1282,36 @@
   	return theResult;
   }
   
  +void
  +XalanTransformer::EnsureFunctionsInstallation::install()
  +{
  +
  +	XalanExtensionsInstaller::installGlobal();
  +	XalanEXSLTCommonFunctionsInstaller::installGlobal();
  +	XalanEXSLTDynamicFunctionsInstaller::installGlobal();
  +	XalanEXSLTMathFunctionsInstaller::installGlobal();
  +	XalanEXSLTSetFunctionsInstaller::installGlobal();
  +	XalanEXSLTStringFunctionsInstaller::installGlobal();
  +	XalanEXSLTDateTimeFunctionsInstaller::installGlobal();
  +}
  +
  +XalanTransformer::EnsureFunctionsInstallation::~EnsureFunctionsInstallation()
  +{
  +	if ( !m_release )
  +	{
  +		XalanExtensionsInstaller::uninstallGlobal();
  +		XalanEXSLTCommonFunctionsInstaller::uninstallGlobal();
  +		XalanEXSLTDynamicFunctionsInstaller::uninstallGlobal();
  +		XalanEXSLTMathFunctionsInstaller::uninstallGlobal();
  +		XalanEXSLTSetFunctionsInstaller::uninstallGlobal();
  +		XalanEXSLTStringFunctionsInstaller::uninstallGlobal();
  +		XalanEXSLTDateTimeFunctionsInstaller::uninstallGlobal();
  +
  +#if defined(XALAN_USE_ICU)
  +		XPath::uninstallFunction(XPathFunctionTable::s_formatNumber);
  +#endif
  +	}
  +}
   
   
   XALAN_CPP_NAMESPACE_END
  
  
  
  1.9       +25 -0     xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.hpp
  
  Index: XalanTransformer.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/xalanc/XalanTransformer/XalanTransformer.hpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XalanTransformer.hpp	26 Feb 2004 23:07:13 -0000	1.8
  +++ XalanTransformer.hpp	26 Jul 2004 02:09:25 -0000	1.9
  @@ -815,6 +815,31 @@
   	typedef std::vector<TraceListener*>					TraceListenerVectorType;
   #endif
   
  +	class EnsureFunctionsInstallation
  +	{
  +	public:
  +		
  +		EnsureFunctionsInstallation() : 
  +		  m_release(false)
  +		{	  
  +		}
  +
  +		~EnsureFunctionsInstallation();
  +
  +		static void
  +		install();
  +
  +		void
  +		release()
  +		{
  +			m_release = true;
  +		}
  +
  +	private:
  +
  +		bool m_release;
  +	};
  +
   	class EnsureDestroyParsedSource
   	{
   	public:
  
  
  

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