Author: alg
Date: Mon Feb 24 20:25:26 2014
New Revision: 1571426

URL: http://svn.apache.org/r1571426
Log:
i118640 force early destruction of last FragmentHandler to not let it use an 
already destroyed RelationsMap instance

Modified:
    openoffice/trunk/main/oox/source/core/xmlfilterbase.cxx

Modified: openoffice/trunk/main/oox/source/core/xmlfilterbase.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/oox/source/core/xmlfilterbase.cxx?rev=1571426&r1=1571425&r2=1571426&view=diff
==============================================================================
--- openoffice/trunk/main/oox/source/core/xmlfilterbase.cxx (original)
+++ openoffice/trunk/main/oox/source/core/xmlfilterbase.cxx Mon Feb 24 20:25:26 
2014
@@ -87,6 +87,7 @@ struct XmlFilterBaseImpl
     TextFieldStack      maTextFieldStack;
 
     explicit            XmlFilterBaseImpl( const Reference< XComponentContext 
>& rxContext ) throw( RuntimeException );
+    ~XmlFilterBaseImpl();
 };
 
 // ----------------------------------------------------------------------------
@@ -121,6 +122,10 @@ XmlFilterBaseImpl::XmlFilterBaseImpl( co
     maFastParser.registerNamespace( NMSP_markupCompat );    // i123528
 }
 
+XmlFilterBaseImpl::~XmlFilterBaseImpl()
+{
+}
+
 // ============================================================================
 
 XmlFilterBase::XmlFilterBase( const Reference< XComponentContext >& rxContext 
) throw( RuntimeException ) :
@@ -133,6 +138,14 @@ XmlFilterBase::XmlFilterBase( const Refe
 
 XmlFilterBase::~XmlFilterBase()
 {
+    // #118640# Reset the DocumentHandler at the FastSaxParser manually; this 
is
+    // needed since the mechanism is that instances of FragmentHandler execute
+    // their stuff (creating objects, setting attributes, ...) on being 
destroyed.
+    // They get destroyed by setting a new DocumentHandler. This also happens 
in
+    // the following implicit destruction chain of ~XmlFilterBaseImpl, but in 
that 
+    // case it's member RelationsMap maRelationsMap will be destroyed, but 
maybe 
+    // still be used by ~FragmentHandler -> crash.
+    mxImpl->maFastParser.setDocumentHandler( 0 );
 }
 
 // ----------------------------------------------------------------------------


Reply via email to