[Libreoffice-commits] core.git: comphelper/source include/comphelper

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Fri Jul 30 09:33:36 UTC 2021


 comphelper/source/streaming/seqstream.cxx |   23 ++++++++++++++---------
 include/comphelper/seqstream.hxx          |    5 +++--
 2 files changed, 17 insertions(+), 11 deletions(-)

New commits:
commit 957a66e58444a2ac4bb77d978fd08e84fceffc38
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Fri Jul 30 09:45:01 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Jul 30 11:33:00 2021 +0200

    osl::Mutex->std::mutex in SequenceInputStream
    
    also
    (*) check params before taking mutex to minimise the time holding the
    mutex
    (*) some methods were missing a lock_guard
    
    Change-Id: Iac35328e67f81b38c896f7c1e2a3514b813656c1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119696
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/comphelper/source/streaming/seqstream.cxx b/comphelper/source/streaming/seqstream.cxx
index 7cffb774232f..b33c63f0931b 100644
--- a/comphelper/source/streaming/seqstream.cxx
+++ b/comphelper/source/streaming/seqstream.cxx
@@ -57,13 +57,13 @@ inline sal_Int32 SequenceInputStream::avail()
 
 sal_Int32 SAL_CALL SequenceInputStream::readBytes( Sequence<sal_Int8>& aData, sal_Int32 nBytesToRead )
 {
-    ::osl::MutexGuard aGuard( m_aMutex );
-
-    sal_Int32 nAvail = avail();
-
     if (nBytesToRead < 0)
         throw BufferSizeExceededException(OUString(),*this);
 
+    std::lock_guard aGuard( m_aMutex );
+
+    sal_Int32 nAvail = avail();
+
     if (nAvail < nBytesToRead)
         nBytesToRead = nAvail;
 
@@ -84,13 +84,13 @@ sal_Int32 SAL_CALL SequenceInputStream::readSomeBytes( Sequence<sal_Int8>& aData
 
 void SAL_CALL SequenceInputStream::skipBytes( sal_Int32 nBytesToSkip )
 {
-    ::osl::MutexGuard aGuard( m_aMutex );
-
-    sal_Int32 nAvail = avail();
-
     if (nBytesToSkip < 0)
         throw BufferSizeExceededException(OUString(),*this);
 
+    std::lock_guard aGuard( m_aMutex );
+
+    sal_Int32 nAvail = avail();
+
     if (nAvail < nBytesToSkip)
         nBytesToSkip = nAvail;
 
@@ -100,7 +100,7 @@ void SAL_CALL SequenceInputStream::skipBytes( sal_Int32 nBytesToSkip )
 
 sal_Int32 SAL_CALL SequenceInputStream::available(  )
 {
-    ::osl::MutexGuard aGuard( m_aMutex );
+    std::lock_guard aGuard( m_aMutex );
 
     return avail();
 }
@@ -108,6 +108,8 @@ sal_Int32 SAL_CALL SequenceInputStream::available(  )
 
 void SAL_CALL SequenceInputStream::closeInput(  )
 {
+    std::lock_guard aGuard( m_aMutex );
+
     if (m_nPos == -1)
         throw NotConnectedException(OUString(), *this);
 
@@ -118,16 +120,19 @@ void SAL_CALL SequenceInputStream::seek( sal_Int64 location )
 {
     if ( location > m_aData.getLength() || location < 0 || location > SAL_MAX_INT32 )
         throw IllegalArgumentException("bad location", static_cast<cppu::OWeakObject*>(this), 1);
+    std::lock_guard aGuard( m_aMutex );
     m_nPos = static_cast<sal_Int32>(location);
 }
 
 sal_Int64 SAL_CALL SequenceInputStream::getPosition()
 {
+    std::lock_guard aGuard( m_aMutex );
     return m_nPos;
 }
 
 sal_Int64 SAL_CALL SequenceInputStream::getLength(  )
 {
+    std::lock_guard aGuard( m_aMutex );
     return m_aData.getLength();
 }
 
diff --git a/include/comphelper/seqstream.hxx b/include/comphelper/seqstream.hxx
index 6ea3ebc2c777..88db729832c5 100644
--- a/include/comphelper/seqstream.hxx
+++ b/include/comphelper/seqstream.hxx
@@ -27,6 +27,7 @@
 #include <osl/mutex.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <comphelper/comphelperdllapi.h>
+#include <mutex>
 
 namespace comphelper
 {
@@ -39,7 +40,7 @@ namespace comphelper
 class COMPHELPER_DLLPUBLIC SequenceInputStream final
     : public ::cppu::WeakImplHelper< css::io::XInputStream, css::io::XSeekable >
 {
-    ::osl::Mutex    m_aMutex;
+    std::mutex    m_aMutex;
     css::uno::Sequence<sal_Int8> const m_aData;
     sal_Int32       m_nPos;
 
@@ -62,7 +63,7 @@ public:
     virtual sal_Int64 SAL_CALL getLength(  ) override;
 
 private:
-    inline sal_Int32 avail();
+    sal_Int32 avail();
 };
 
 // don't export to avoid duplicate WeakImplHelper definitions with MSVC


More information about the Libreoffice-commits mailing list