User: rt      
Date: 2008-06-06 13:59:59+0000
Modified:
   dba/dbaccess/source/core/dataaccess/ComponentDefinition.cxx

Log:
 INTEGRATION: CWS dba30c (1.15.8); FILE MERGED
 2008/05/05 06:16:45 oj 1.15.8.1: #156608# clear listener after disposing 
columns

File Changes:

Directory: /dba/dbaccess/source/core/dataaccess/
================================================

File [changed]: ComponentDefinition.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/ComponentDefinition.cxx?r1=1.15&r2=1.16
Delta lines:  +7 -4
-------------------
--- ComponentDefinition.cxx     2008-04-10 12:36:46+0000        1.15
+++ ComponentDefinition.cxx     2008-06-06 13:59:56+0000        1.16
@@ -97,12 +97,14 @@
     // XPropertyChangeListener
        virtual void SAL_CALL propertyChange( const PropertyChangeEvent& 
/*_rEvent*/ ) throw (RuntimeException)
     {
+        if ( m_pComponent )
         m_pComponent->notifyDataSourceModified();
     }
        // XEventListener
        virtual void SAL_CALL disposing( const EventObject& /*_rSource*/ ) 
throw (RuntimeException)
     {
     }
+    void clear() { m_pComponent = NULL; }
 };
 DBG_NAME(OComponentDefinition_Impl)    
 OComponentDefinition_Impl::OComponentDefinition_Impl()
@@ -122,7 +124,7 @@
 //--------------------------------------------------------------------------
 void OComponentDefinition::registerProperties()
 {
-    m_xColumnPropertyListener = new OColumnPropertyListener(this);
+    m_xColumnPropertyListener = 
::comphelper::ImplementationReference<OColumnPropertyListener,XPropertyChangeListener>(new
 OColumnPropertyListener(this));
        OComponentDefinition_Impl& rDefinition( getDefinition() );
     ODataSettings::registerPropertiesFor( &rDefinition );
 
@@ -215,9 +217,10 @@
 void SAL_CALL OComponentDefinition::disposing()
 {
        OContentHelper::disposing();
-    m_xColumnPropertyListener.clear();
     if ( m_pColumns.get() )
            m_pColumns->disposing();
+    m_xColumnPropertyListener->clear();
+    m_xColumnPropertyListener.dispose();
 }
 // 
-----------------------------------------------------------------------------
 IPropertyArrayHelper& OComponentDefinition::getInfoHelper()
@@ -267,7 +270,7 @@
     OComponentDefinition_Impl::const_iterator aFind = rDefinition.find( _rName 
);
        if ( aFind != rDefinition.end() )
     {
-        
aFind->second->addPropertyChangeListener(::rtl::OUString(),m_xColumnPropertyListener);
+        
aFind->second->addPropertyChangeListener(::rtl::OUString(),m_xColumnPropertyListener.getRef());
                return new OTableColumnWrapper( aFind->second, aFind->second, 
sal_True );        
     }
        return new OTableColumn( _rName );




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to