diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-30 09:45:01 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-07-30 11:33:00 +0200 |
commit | 957a66e58444a2ac4bb77d978fd08e84fceffc38 (patch) | |
tree | a90e9a82cda5b786a7322c6bb4b37cea10819dec /comphelper | |
parent | f107e6893491bdf9e9bd1a8620218640ea76095a (diff) |
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@collabora.co.uk>
Diffstat (limited to 'comphelper')
-rw-r--r-- | comphelper/source/streaming/seqstream.cxx | 23 |
1 files changed, 14 insertions, 9 deletions
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(); } |