Kaydet (Commit) 7bd55997 authored tarafından Michael Stahl's avatar Michael Stahl Kaydeden (comit) Thorsten Behrens

connectivity: fix memory leaks caused by OConnection::acquire()

Followup to 58f121ef;
OConnection must not be held by rtl::Reference as that creates a cycle.

(regression from 497e40ad)

Change-Id: Ibd56d335e3e2631c5a57ea435f1035e89868a5a6
Reviewed-on: https://gerrit.libreoffice.org/73155
Tested-by: Jenkins
Reviewed-by: 's avatarMichael Stahl <Michael.Stahl@cib.de>
(cherry picked from commit 6bd751f9)
Reviewed-on: https://gerrit.libreoffice.org/73243Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst 616ed236
...@@ -37,7 +37,7 @@ OIndexHelper::OIndexHelper( OTableHelper* _pTable) : connectivity::sdbcx::OIndex ...@@ -37,7 +37,7 @@ OIndexHelper::OIndexHelper( OTableHelper* _pTable) : connectivity::sdbcx::OIndex
{ {
construct(); construct();
std::vector< OUString> aVector; std::vector< OUString> aVector;
m_pColumns = new OIndexColumns(this,m_aMutex,aVector); m_pColumns.reset(new OIndexColumns(this,m_aMutex,aVector));
} }
OIndexHelper::OIndexHelper( OTableHelper* _pTable, OIndexHelper::OIndexHelper( OTableHelper* _pTable,
...@@ -93,7 +93,7 @@ void OIndexHelper::refreshColumns() ...@@ -93,7 +93,7 @@ void OIndexHelper::refreshColumns()
if(m_pColumns) if(m_pColumns)
m_pColumns->reFill(aVector); m_pColumns->reFill(aVector);
else else
m_pColumns = new OIndexColumns(this,m_aMutex,aVector); m_pColumns.reset(new OIndexColumns(this,m_aMutex,aVector));
} }
......
...@@ -100,7 +100,7 @@ void OTableKeyHelper::refreshColumns() ...@@ -100,7 +100,7 @@ void OTableKeyHelper::refreshColumns()
if ( m_pColumns ) if ( m_pColumns )
m_pColumns->reFill(aVector); m_pColumns->reFill(aVector);
else else
m_pColumns = new OKeyColumnsHelper(this,m_aMutex,aVector); m_pColumns.reset(new OKeyColumnsHelper(this,m_aMutex,aVector));
} }
......
...@@ -78,7 +78,7 @@ void OAdoGroup::refreshUsers() ...@@ -78,7 +78,7 @@ void OAdoGroup::refreshUsers()
if(m_pUsers) if(m_pUsers)
m_pUsers->reFill(aVector); m_pUsers->reFill(aVector);
else else
m_pUsers = new OUsers(m_pCatalog,m_aMutex,aVector,aUsers,isCaseSensitive()); m_pUsers.reset(new OUsers(m_pCatalog, m_aMutex, aVector, aUsers, isCaseSensitive()));
} }
Sequence< sal_Int8 > OAdoGroup::getUnoTunnelImplementationId() Sequence< sal_Int8 > OAdoGroup::getUnoTunnelImplementationId()
......
...@@ -66,7 +66,7 @@ void OAdoIndex::refreshColumns() ...@@ -66,7 +66,7 @@ void OAdoIndex::refreshColumns()
if ( m_pColumns ) if ( m_pColumns )
m_pColumns->reFill(aVector); m_pColumns->reFill(aVector);
else else
m_pColumns = new OColumns(*this,m_aMutex,aVector,aColumns,isCaseSensitive(),m_pConnection); m_pColumns.reset(new OColumns(*this, m_aMutex, aVector, aColumns, isCaseSensitive(), m_pConnection));
} }
......
...@@ -63,7 +63,7 @@ void OAdoKey::refreshColumns() ...@@ -63,7 +63,7 @@ void OAdoKey::refreshColumns()
if(m_pColumns) if(m_pColumns)
m_pColumns->reFill(aVector); m_pColumns->reFill(aVector);
else else
m_pColumns = new OColumns(*this,m_aMutex,aVector,aColumns,isCaseSensitive(),m_pConnection); m_pColumns.reset(new OColumns(*this, m_aMutex, aVector, aColumns, isCaseSensitive(), m_pConnection));
} }
Sequence< sal_Int8 > OAdoKey::getUnoTunnelImplementationId() Sequence< sal_Int8 > OAdoKey::getUnoTunnelImplementationId()
......
...@@ -62,7 +62,7 @@ void OAdoUser::refreshGroups() ...@@ -62,7 +62,7 @@ void OAdoUser::refreshGroups()
if(m_pGroups) if(m_pGroups)
m_pGroups->reFill(aVector); m_pGroups->reFill(aVector);
else else
m_pGroups = new OGroups(m_pCatalog,m_aMutex,aVector,aGroups,isCaseSensitive()); m_pGroups.reset(new OGroups(m_pCatalog, m_aMutex, aVector, aGroups, isCaseSensitive()));
} }
Sequence< sal_Int8 > OAdoUser::getUnoTunnelImplementationId() Sequence< sal_Int8 > OAdoUser::getUnoTunnelImplementationId()
......
...@@ -100,7 +100,7 @@ void ODbaseIndex::refreshColumns() ...@@ -100,7 +100,7 @@ void ODbaseIndex::refreshColumns()
if(m_pColumns) if(m_pColumns)
m_pColumns->reFill(aVector); m_pColumns->reFill(aVector);
else else
m_pColumns = new ODbaseIndexColumns(this,m_aMutex,aVector); m_pColumns.reset(new ODbaseIndexColumns(this,m_aMutex,aVector));
} }
Sequence< sal_Int8 > ODbaseIndex::getUnoTunnelImplementationId() Sequence< sal_Int8 > ODbaseIndex::getUnoTunnelImplementationId()
......
...@@ -55,7 +55,8 @@ namespace connectivity ...@@ -55,7 +55,8 @@ namespace connectivity
public ODescriptor public ODescriptor
{ {
protected: protected:
rtl::Reference<OUsers> m_pUsers; // no Reference! see OCollection::acquire
std::unique_ptr<OUsers> m_pUsers;
using OGroup_BASE::rBHelper; using OGroup_BASE::rBHelper;
......
...@@ -57,7 +57,8 @@ namespace connectivity ...@@ -57,7 +57,8 @@ namespace connectivity
bool m_IsPrimaryKeyIndex; bool m_IsPrimaryKeyIndex;
bool m_IsClustered; bool m_IsClustered;
rtl::Reference<OCollection> m_pColumns; // no Reference! see OCollection::acquire
std::unique_ptr<OCollection> m_pColumns;
using ODescriptor_BASE::rBHelper; using ODescriptor_BASE::rBHelper;
virtual void refreshColumns() override; virtual void refreshColumns() override;
......
...@@ -69,7 +69,8 @@ namespace connectivity ...@@ -69,7 +69,8 @@ namespace connectivity
{ {
protected: protected:
std::shared_ptr<KeyProperties> m_aProps; std::shared_ptr<KeyProperties> m_aProps;
rtl::Reference<OCollection> m_pColumns; // no Reference! see OCollection::acquire
std::unique_ptr<OCollection> m_pColumns;
using ODescriptor_BASE::rBHelper; using ODescriptor_BASE::rBHelper;
// OPropertyArrayUsageHelper // OPropertyArrayUsageHelper
......
...@@ -53,7 +53,8 @@ namespace connectivity ...@@ -53,7 +53,8 @@ namespace connectivity
public ODescriptor public ODescriptor
{ {
protected: protected:
rtl::Reference<OGroups> m_pGroups; // no Reference! see OCollection::acquire
std::unique_ptr<OGroups> m_pGroups;
using OUser_BASE::rBHelper; using OUser_BASE::rBHelper;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment