summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-02-21 15:38:12 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-02-22 09:16:10 +0000
commita60fcb15046a60fa35fc4ea07d1411bf3563fe2e (patch)
treed8903f0c95ccaf905abff2de31212ee413149669
parent2c37a0ca31095165d05740a2ff4969f625b4a75b (diff)
osl::Mutex->std::mutex in OSQLParseNodesContainer
Change-Id: Ie47589a454799494bc150eec1e135c8948eb7fbf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147420 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--connectivity/source/parse/sqlnode.cxx10
-rw-r--r--include/connectivity/sqlparse.hxx9
2 files changed, 10 insertions, 9 deletions
diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx
index d98e8cc80064..fecb00cdc9b2 100644
--- a/connectivity/source/parse/sqlnode.cxx
+++ b/connectivity/source/parse/sqlnode.cxx
@@ -2731,13 +2731,13 @@ OSQLParseNodesContainer::~OSQLParseNodesContainer()
void OSQLParseNodesContainer::push_back(OSQLParseNode* _pNode)
{
- ::osl::MutexGuard aGuard(m_aMutex);
+ std::unique_lock aGuard(m_aMutex);
m_aNodes.push_back(_pNode);
}
void OSQLParseNodesContainer::erase(OSQLParseNode* _pNode)
{
- ::osl::MutexGuard aGuard(m_aMutex);
+ std::unique_lock aGuard(m_aMutex);
if ( !m_aNodes.empty() )
{
std::vector< OSQLParseNode* >::iterator aFind = std::find(m_aNodes.begin(), m_aNodes.end(),_pNode);
@@ -2748,13 +2748,13 @@ void OSQLParseNodesContainer::erase(OSQLParseNode* _pNode)
void OSQLParseNodesContainer::clear()
{
- ::osl::MutexGuard aGuard(m_aMutex);
+ std::unique_lock aGuard(m_aMutex);
m_aNodes.clear();
}
void OSQLParseNodesContainer::clearAndDelete()
{
- ::osl::MutexGuard aGuard(m_aMutex);
+ std::unique_lock aGuard(m_aMutex);
// clear the garbage collector
while ( !m_aNodes.empty() )
{
@@ -2763,7 +2763,9 @@ void OSQLParseNodesContainer::clearAndDelete()
{
pNode = pNode->getParent();
}
+ aGuard.unlock(); // can call back into this object during destruction
delete pNode;
+ aGuard.lock();
}
}
} // namespace connectivity
diff --git a/include/connectivity/sqlparse.hxx b/include/connectivity/sqlparse.hxx
index 0a8523e436a8..d3eedd484137 100644
--- a/include/connectivity/sqlparse.hxx
+++ b/include/connectivity/sqlparse.hxx
@@ -19,11 +19,7 @@
#ifndef INCLUDED_CONNECTIVITY_SQLPARSE_HXX
#define INCLUDED_CONNECTIVITY_SQLPARSE_HXX
-#include <memory>
-#include <string_view>
-
#include <com/sun/star/uno/Reference.h>
-#include <osl/mutex.hxx>
#include <connectivity/sqlnode.hxx>
#include <connectivity/IParseContext.hxx>
#include <connectivity/dbtoolsdllapi.hxx>
@@ -31,6 +27,9 @@
#include <comphelper/singletonref.hxx>
#include <map>
+#include <memory>
+#include <mutex>
+#include <string_view>
namespace com::sun::star::i18n { class XCharacterClassification; }
namespace com::sun::star::i18n { class XLocaleData4; }
@@ -82,7 +81,7 @@ namespace connectivity
class OSQLParseNodesContainer
{
- ::osl::Mutex m_aMutex;
+ std::mutex m_aMutex;
::std::vector< OSQLParseNode* > m_aNodes;
public:
OSQLParseNodesContainer();