sw/source/core/edit/edglss.cxx    |   18 +++---------------
 sw/source/core/unocore/unoobj.cxx |   16 ++++------------
 2 files changed, 7 insertions(+), 27 deletions(-)

New commits:
commit 3b4433883f959aa78fa91163493e0950ea85d08d
Author:     Mike Kaganski <[email protected]>
AuthorDate: Fri Jun 27 22:29:10 2025 +0200
Commit:     Mike Kaganski <[email protected]>
CommitDate: Sat Jun 28 06:50:14 2025 +0200

    Simplify OUString creation from SvMemoryStream
    
    No need for a fallback to Seek / ReadBytes if !p.
    No need to write null character, nor to count to it: we know the size.
    
    Change-Id: If85dd953862ae60e32f33af1ddd4d9099f6885f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187124
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <[email protected]>

diff --git a/sw/source/core/edit/edglss.cxx b/sw/source/core/edit/edglss.cxx
index 7e5a41a73a0d..4576cbec48d5 100644
--- a/sw/source/core/edit/edglss.cxx
+++ b/sw/source/core/edit/edglss.cxx
@@ -303,22 +303,10 @@ void SwEditShell::GetSelectedText( OUString &rBuf, 
ParaBreakType nHndlParaBrk )
 
             if ( ! aWriter.Write(xWrt).IsError() )
             {
-                aStream.WriteUInt16( '
-
                 const sal_Unicode *p = static_cast<sal_Unicode const 
*>(aStream.GetData());
-                if (p)
-                    rBuf = OUString(p);
-                else
-                {
-                    const sal_uInt64 nLen = aStream.GetSize();
-                    OSL_ENSURE( nLen/sizeof( sal_Unicode 
)<o3tl::make_unsigned(SAL_MAX_INT32), "Stream can't fit in OUString" );
-                    rtl_uString *pStr = 
rtl_uString_alloc(static_cast<sal_Int32>(nLen / sizeof( sal_Unicode )));
-                    aStream.Seek( 0 );
-                    aStream.ResetError();
-                    //endian specific?, yipes!
-                    aStream.ReadBytes(pStr->buffer, nLen);
-                    rBuf = OUString(pStr, SAL_NO_ACQUIRE);
-                }
+                const size_t nUniLen = aStream.GetEndOfData() / 
sizeof(sal_Unicode);
+                if (p && nUniLen < o3tl::make_unsigned(SAL_MAX_INT32 - 1))
+                    rBuf = OUString(p, nUniLen);
             }
         }
     }
diff --git a/sw/source/core/unocore/unoobj.cxx 
b/sw/source/core/unocore/unoobj.cxx
index 57aac3b5e258..3ed86a98a45b 100644
--- a/sw/source/core/unocore/unoobj.cxx
+++ b/sw/source/core/unocore/unoobj.cxx
@@ -168,18 +168,10 @@ void SwUnoCursorHelper::GetTextFromPam(SwPaM & rPam, 
OUString & rBuffer,
 
     if( ! aWriter.Write( xWrt ).IsError() )
     {
-        const sal_uInt64 lUniLen = aStream.GetSize()/sizeof( sal_Unicode );
-        if (lUniLen < o3tl::make_unsigned(SAL_MAX_INT32-1))
-        {
-            aStream.WriteUInt16( '
-
-            aStream.Seek( 0 );
-            aStream.ResetError();
-
-            rtl_uString *pStr = rtl_uString_alloc(lUniLen);
-            aStream.ReadBytes(pStr->buffer, lUniLen * sizeof(sal_Unicode));
-            rBuffer = OUString(pStr, SAL_NO_ACQUIRE);
-        }
+        const sal_Unicode* p = static_cast<sal_Unicode 
const*>(aStream.GetData());
+        const size_t lUniLen = aStream.GetEndOfData()/sizeof( sal_Unicode );
+        if (p && lUniLen < o3tl::make_unsigned(SAL_MAX_INT32-1))
+            rBuffer = OUString(p, lUniLen);
     }
     xWrt->m_bShowProgress = bOldShowProgress;
 

Reply via email to