include/svl/sharedstringpool.hxx | 2 ++ svl/source/misc/sharedstringpool.cxx | 6 ++++++ 2 files changed, 8 insertions(+)
New commits: commit 625a17774bfceabbce9f298d7be6bf4fa2e43ea6 Author: Kohei Yoshida <[email protected]> Date: Tue Nov 5 14:38:28 2013 -0500 Add mutex to guard the shared string pool content. Change-Id: I0eb97d0fbeaefd8a1c86d240ed8bd7f208fb662e diff --git a/include/svl/sharedstringpool.hxx b/include/svl/sharedstringpool.hxx index 1b2796d..b2cb367 100644 --- a/include/svl/sharedstringpool.hxx +++ b/include/svl/sharedstringpool.hxx @@ -11,6 +11,7 @@ #define INCLUDED_SVL_SHAREDSTRINGPOOL_HXX #include "svl/sharedstring.hxx" +#include "osl/mutex.hxx" #include <boost/unordered_map.hpp> #include <boost/unordered_set.hpp> @@ -30,6 +31,7 @@ class SVL_DLLPUBLIC SharedStringPool typedef std::pair<StrHashType::iterator, bool> InsertResultType; typedef boost::unordered_map<const rtl_uString*, OUString> StrStoreType; + mutable osl::Mutex maMutex; StrHashType maStrPool; StrHashType maStrPoolUpper; StrStoreType maStrStore; diff --git a/svl/source/misc/sharedstringpool.cxx b/svl/source/misc/sharedstringpool.cxx index 46bf814..1e85da5 100644 --- a/svl/source/misc/sharedstringpool.cxx +++ b/svl/source/misc/sharedstringpool.cxx @@ -17,6 +17,8 @@ SharedStringPool::SharedStringPool( const CharClass* pCharClass ) : mpCharClass( SharedString SharedStringPool::intern( const OUString& rStr ) { + osl::MutexGuard aGuard(&maMutex); + InsertResultType aRes = findOrInsert(maStrPool, rStr); if (aRes.first == maStrPool.end()) // Insertion failed. @@ -63,6 +65,8 @@ inline sal_Int32 getRefCount( const rtl_uString* p ) void SharedStringPool::purge() { + osl::MutexGuard aGuard(&maMutex); + StrHashType aNewStrPool; StrHashType::iterator it = maStrPool.begin(), itEnd = maStrPool.end(); for (; it != itEnd; ++it) @@ -98,11 +102,13 @@ void SharedStringPool::purge() size_t SharedStringPool::getCount() const { + osl::MutexGuard aGuard(&maMutex); return maStrPool.size(); } size_t SharedStringPool::getCountIgnoreCase() const { + osl::MutexGuard aGuard(&maMutex); return maStrPoolUpper.size(); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
