diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2021-05-16 21:34:35 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-05-17 10:39:20 +0200 |
commit | dd5666a0425935f2389811abf750f435411e3fe0 (patch) | |
tree | ae93546009cc6441b1887acf478e67f7a7b5a91c /chart2/source/controller/main/CommandDispatch.cxx | |
parent | d8d15656817a58a5e9c6a6ebc88038ba4e5ef865 (diff) |
fix leak in CommandDispatch
Change-Id: I0249b18fd40f4f5ef95e2101286dc25782c42eb5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115684
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source/controller/main/CommandDispatch.cxx')
-rw-r--r-- | chart2/source/controller/main/CommandDispatch.cxx | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/chart2/source/controller/main/CommandDispatch.cxx b/chart2/source/controller/main/CommandDispatch.cxx index 22e0a52c204f..ed6370a5228b 100644 --- a/chart2/source/controller/main/CommandDispatch.cxx +++ b/chart2/source/controller/main/CommandDispatch.cxx @@ -26,25 +26,6 @@ using namespace ::com::sun::star; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; -namespace -{ -template< class Map > - void lcl_DisposeAndClearAndDeleteAllMapElements( - Map & rMap, - const Reference< uno::XInterface > & xEventSource ) -{ - for( const auto& rElement : rMap ) - { - if( rElement.second ) - { - rElement.second->disposeAndClear( xEventSource ); - delete rElement.second; - } - } -} - -} // anonymous namespace - namespace chart { @@ -65,7 +46,15 @@ void CommandDispatch::initialize() /// is called when this is disposed void SAL_CALL CommandDispatch::disposing() { - lcl_DisposeAndClearAndDeleteAllMapElements( m_aListeners, static_cast< cppu::OWeakObject* >( this )); + Reference< uno::XInterface > xEventSource(static_cast< cppu::OWeakObject* >( this )); + for( auto& rElement : m_aListeners ) + { + if( rElement.second ) + { + rElement.second->disposeAndClear( xEventSource ); + rElement.second.reset(); + } + } m_aListeners.clear(); } |