io/source/stm/omark.cxx |   33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

New commits:
commit d2ebcd853be89255451c269a463619f56987d0ed
Author:     Noel Grandin <[email protected]>
AuthorDate: Mon Dec 18 12:54:51 2023 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Mon Dec 18 14:25:56 2023 +0100

    unique_ptr->optional in OMarkableInputStream
    
    Change-Id: I2d3d761043068017cc5da823ec6c0fcda2432e6d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160906
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/io/source/stm/omark.cxx b/io/source/stm/omark.cxx
index 3e6127d7310e..3507eb0a0729 100644
--- a/io/source/stm/omark.cxx
+++ b/io/source/stm/omark.cxx
@@ -20,6 +20,7 @@
 
 #include <map>
 #include <memory>
+#include <optional>
 
 #include <com/sun/star/io/BufferSizeExceededException.hpp>
 #include <com/sun/star/io/NotConnectedException.hpp>
@@ -422,7 +423,7 @@ private:
     Reference< XInputStream > m_input;
     bool m_bValidStream;
 
-    std::unique_ptr<MemRingBuffer> m_pBuffer;
+    std::optional<MemRingBuffer> m_oBuffer;
     std::map<sal_Int32,sal_Int32,std::less< sal_Int32 > > m_mapMarks;
     sal_Int32 m_nCurrentPos;
     sal_Int32 m_nCurrentMark;
@@ -437,7 +438,7 @@ OMarkableInputStream::OMarkableInputStream()
     , m_nCurrentPos(0)
     , m_nCurrentMark(0)
 {
-    m_pBuffer.reset( new MemRingBuffer );
+    m_oBuffer.emplace();
 }
 
 
@@ -453,7 +454,7 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< 
sal_Int8 >& aData, sal_Int32
             *this );
     }
     std::unique_lock guard( m_mutex );
-    if( m_mapMarks.empty() && ! m_pBuffer->getSize() ) {
+    if( m_mapMarks.empty() && ! m_oBuffer->getSize() ) {
         // normal read !
         nBytesRead = m_input->readBytes( aData, nBytesToRead );
     }
@@ -462,22 +463,22 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< 
sal_Int8 >& aData, sal_Int32
         sal_Int32 nRead;
 
         // read enough bytes into buffer
-        if( m_pBuffer->getSize() - m_nCurrentPos < nBytesToRead  ) {
-            sal_Int32 nToRead = nBytesToRead - ( m_pBuffer->getSize() - 
m_nCurrentPos );
+        if( m_oBuffer->getSize() - m_nCurrentPos < nBytesToRead  ) {
+            sal_Int32 nToRead = nBytesToRead - ( m_oBuffer->getSize() - 
m_nCurrentPos );
             nRead = m_input->readBytes( aData , nToRead );
 
             OSL_ASSERT( aData.getLength() == nRead );
 
-            m_pBuffer->writeAt( m_pBuffer->getSize() , aData );
+            m_oBuffer->writeAt( m_oBuffer->getSize() , aData );
 
             if( nRead < nToRead ) {
                 nBytesToRead = nBytesToRead - (nToRead-nRead);
             }
         }
 
-        OSL_ASSERT( m_pBuffer->getSize() - m_nCurrentPos >= nBytesToRead  );
+        OSL_ASSERT( m_oBuffer->getSize() - m_nCurrentPos >= nBytesToRead  );
 
-        m_pBuffer->readAt( m_nCurrentPos , aData , nBytesToRead );
+        m_oBuffer->readAt( m_nCurrentPos , aData , nBytesToRead );
 
         m_nCurrentPos += nBytesToRead;
         nBytesRead = nBytesToRead;
@@ -498,14 +499,14 @@ sal_Int32 OMarkableInputStream::readSomeBytes(Sequence< 
sal_Int8 >& aData, sal_I
     }
 
     std::unique_lock guard( m_mutex );
-    if( m_mapMarks.empty() && ! m_pBuffer->getSize() ) {
+    if( m_mapMarks.empty() && ! m_oBuffer->getSize() ) {
         // normal read !
         nBytesRead = m_input->readSomeBytes( aData, nMaxBytesToRead );
     }
     else {
         // read from buffer
         sal_Int32 nRead = 0;
-        sal_Int32 nInBuffer = m_pBuffer->getSize() - m_nCurrentPos;
+        sal_Int32 nInBuffer = m_oBuffer->getSize() - m_nCurrentPos;
         sal_Int32 nAdditionalBytesToRead = 
std::min<sal_Int32>(nMaxBytesToRead-nInBuffer,m_input->available());
         nAdditionalBytesToRead = std::max<sal_Int32>(0 , 
nAdditionalBytesToRead );
 
@@ -519,13 +520,13 @@ sal_Int32 OMarkableInputStream::readSomeBytes(Sequence< 
sal_Int8 >& aData, sal_I
 
         if( nRead ) {
             aData.realloc( nRead );
-            m_pBuffer->writeAt( m_pBuffer->getSize() , aData );
+            m_oBuffer->writeAt( m_oBuffer->getSize() , aData );
         }
 
         nBytesRead = std::min( nMaxBytesToRead , nInBuffer + nRead );
 
         // now take everything from buffer !
-        m_pBuffer->readAt( m_nCurrentPos , aData , nBytesRead );
+        m_oBuffer->readAt( m_nCurrentPos , aData , nBytesRead );
 
         m_nCurrentPos += nBytesRead;
     }
@@ -558,7 +559,7 @@ sal_Int32 OMarkableInputStream::available()
     }
 
     std::unique_lock guard( m_mutex );
-    sal_Int32 nAvail = m_input->available() + ( m_pBuffer->getSize() - 
m_nCurrentPos );
+    sal_Int32 nAvail = m_input->available() + ( m_oBuffer->getSize() - 
m_nCurrentPos );
     return nAvail;
 }
 
@@ -578,7 +579,7 @@ void OMarkableInputStream::closeInput()
     setPredecessor( Reference< XConnectable > () );
     setSuccessor( Reference< XConnectable >() );
 
-    m_pBuffer.reset();
+    m_oBuffer.reset();
     m_nCurrentPos = 0;
     m_nCurrentMark = 0;
 }
@@ -627,7 +628,7 @@ void OMarkableInputStream::jumpToMark(sal_Int32 nMark)
 void OMarkableInputStream::jumpToFurthest()
 {
     std::unique_lock guard( m_mutex );
-    m_nCurrentPos = m_pBuffer->getSize();
+    m_nCurrentPos = m_oBuffer->getSize();
     checkMarksAndFlush();
 }
 
@@ -725,7 +726,7 @@ void OMarkableInputStream::checkMarksAndFlush()
             mark.second -= nNextFound;
         }
 
-        m_pBuffer->forgetFromStart( nNextFound );
+        m_oBuffer->forgetFromStart( nNextFound );
 
     }
     else {
  • core.git: io/source Noel Grandin (via logerrit)
    • core.git: io/source Noel Grandin (via logerrit)

Reply via email to