diff options
author | David Tardon <dtardon@redhat.com> | 2011-05-12 06:44:54 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2011-05-12 14:32:54 +0200 |
commit | 51922ecd1184c13d37baab49f170e9d9e0a92516 (patch) | |
tree | f84a1555b0f4e4530d6265e880e53438b6879635 /comphelper/source | |
parent | 8d4a4996f8ee75d96344a2aac3e943df5dadc1c8 (diff) |
do not leak memory
Diffstat (limited to 'comphelper/source')
-rw-r--r-- | comphelper/source/misc/componentmodule.cxx | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/comphelper/source/misc/componentmodule.cxx b/comphelper/source/misc/componentmodule.cxx index c42308c71508..4318acc149be 100644 --- a/comphelper/source/misc/componentmodule.cxx +++ b/comphelper/source/misc/componentmodule.cxx @@ -85,7 +85,7 @@ namespace comphelper //------------------------------------------------------------------------- OModule::OModule() :m_nClients( 0 ) - ,m_pImpl( new OModuleImpl ) + ,m_pImpl( 0 ) { } @@ -110,17 +110,24 @@ namespace comphelper //-------------------------------------------------------------------------- void OModule::onFirstClient() { + OSL_PRECOND( !m_pImpl, "called out of sequence" ); + if ( !m_pImpl ) + m_pImpl = new OModuleImpl; } //-------------------------------------------------------------------------- void OModule::onLastClient() { + OSL_PRECOND( m_pImpl, "called out of sequence" ); + delete m_pImpl; + m_pImpl = 0; } //-------------------------------------------------------------------------- void OModule::registerImplementation( const ComponentDescription& _rComp ) { ::osl::MutexGuard aGuard( m_aMutex ); + OSL_PRECOND( m_pImpl, "not initialized properly" ); if ( !m_pImpl ) throw RuntimeException(); |