basic/source/basmgr/basmgr.cxx              |   11 +++++------
 dbaccess/source/ui/tabledesign/TableRow.cxx |    8 ++++----
 editeng/source/items/legacyitem.cxx         |    4 ++--
 editeng/source/items/numitem.cxx            |    6 +++---
 include/tools/stream.hxx                    |   12 +++++++-----
 sc/source/core/tool/ddelink.cxx             |    7 +++----
 sc/source/filter/dif/difexp.cxx             |   10 +++++-----
 sc/source/ui/docshell/docsh.cxx             |   12 ++++++------
 svl/source/items/stringio.cxx               |    5 +----
 svtools/source/misc/templatefoldercache.cxx |    4 ++--
 tools/source/stream/stream.cxx              |    8 +++++++-
 vcl/source/font/font.cxx                    |    4 ++--
 vcl/source/treelist/transfer.cxx            |    4 ++--
 13 files changed, 49 insertions(+), 46 deletions(-)

New commits:
commit d235ca35892c8436ac8982a41ed37379be628493
Author:     Noel Grandin <[email protected]>
AuthorDate: Thu Feb 26 14:16:23 2026 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Fri Feb 27 07:48:47 2026 +0100

    SvStream::ReadUniOrByteString should not need to specify encoding
    
    Instead, rely on the stream being set into the correct encoding
    during stream initialisation.
    
    Change-Id: I5b015f12f141a89b176c5a22aeecc4336f0b8f13
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200460
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx
index f7dd92125b33..a98e22979417 100644
--- a/basic/source/basmgr/basmgr.cxx
+++ b/basic/source/basmgr/basmgr.cxx
@@ -393,15 +393,15 @@ BasicLibInfo* BasicLibInfo::Create( SotStorageStream& 
rSStream )
         pInfo->bDoLoad = bDoLoad;
 
         // The name of the lib...
-        OUString aName = 
rSStream.ReadUniOrByteString(rSStream.GetStreamEncoding());
+        OUString aName = rSStream.ReadUniOrByteString();
         pInfo->SetLibName( aName );
 
         // Absolute path...
-        OUString aStorageName = 
rSStream.ReadUniOrByteString(rSStream.GetStreamEncoding());
+        OUString aStorageName = rSStream.ReadUniOrByteString();
         pInfo->SetStorageName( aStorageName );
 
         // Relative path...
-        OUString aRelStorageName = 
rSStream.ReadUniOrByteString(rSStream.GetStreamEncoding());
+        OUString aRelStorageName = rSStream.ReadUniOrByteString();
         pInfo->SetRelStorageName( aRelStorageName );
 
         if ( nVer >= 2 )
@@ -746,7 +746,7 @@ void BasicManager::LoadOldBasicManager( SotStorage& 
rStorage )
         // and it proceeds ...
     }
     xManagerStream->Seek( nBasicEndOff+1 ); // +1: 0x00 as separator
-    OUString aLibs = 
xManagerStream->ReadUniOrByteString(xManagerStream->GetStreamEncoding());
+    OUString aLibs = xManagerStream->ReadUniOrByteString();
     xManagerStream->SetBufferSize( 0 );
     xManagerStream.clear(); // Close stream
 
@@ -904,8 +904,7 @@ bool BasicManager::ImpLoadLibrary( BasicLibInfo* pLibInfo, 
SotStorage* pCurStora
                 xBasicStream->ReadUInt32( nPasswordMarker );
                 if ( ( nPasswordMarker == PASSWORD_MARKER ) && 
!xBasicStream->eof() )
                 {
-                    OUString aPassword = xBasicStream->ReadUniOrByteString(
-                        xBasicStream->GetStreamEncoding());
+                    OUString aPassword = xBasicStream->ReadUniOrByteString();
                     pLibInfo->SetPassword( aPassword );
                 }
                 xBasicStream->SetCryptMaskKey(OString());
diff --git a/dbaccess/source/ui/tabledesign/TableRow.cxx 
b/dbaccess/source/ui/tabledesign/TableRow.cxx
index 9d1f91e4c3b2..20c868067a45 100644
--- a/dbaccess/source/ui/tabledesign/TableRow.cxx
+++ b/dbaccess/source/ui/tabledesign/TableRow.cxx
@@ -132,9 +132,9 @@ namespace dbaui
             return _rStr;
         OFieldDescription* pFieldDesc = new OFieldDescription();
         _rRow.m_pActFieldDescr = pFieldDesc;
-        
pFieldDesc->SetName(_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding()));
-        
pFieldDesc->SetDescription(_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding()));
-        
pFieldDesc->SetHelpText(_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding()));
+        pFieldDesc->SetName(_rStr.ReadUniOrByteString());
+        pFieldDesc->SetDescription(_rStr.ReadUniOrByteString());
+        pFieldDesc->SetHelpText(_rStr.ReadUniOrByteString());
 
         _rStr.ReadInt32( nValue );
         Any aControlDefault;
@@ -148,7 +148,7 @@ namespace dbaui
                 break;
             }
             case 2:
-                aControlDefault <<= 
_rStr.ReadUniOrByteString(_rStr.GetStreamEncoding());
+                aControlDefault <<= _rStr.ReadUniOrByteString();
                 break;
         }
 
diff --git a/editeng/source/items/legacyitem.cxx 
b/editeng/source/items/legacyitem.cxx
index 58442a0dc19d..23fe71101e57 100644
--- a/editeng/source/items/legacyitem.cxx
+++ b/editeng/source/items/legacyitem.cxx
@@ -140,7 +140,7 @@ namespace legacy
             if ( nDoLoad & LOAD_LINK )
             {
                 // UNICODE: rStrm >> aRel;
-                OUString aRel = 
rStrm.ReadUniOrByteString(rStrm.GetStreamEncoding());
+                OUString aRel = rStrm.ReadUniOrByteString();
 
                 // TODO/MBA: how can we get a BaseURL here?!
                 OSL_FAIL("No BaseURL!");
@@ -152,7 +152,7 @@ namespace legacy
             if ( nDoLoad & LOAD_FILTER )
             {
                 // UNICODE: rStrm >> maStrFilter;
-                
rItem.SetGraphicFilter(rStrm.ReadUniOrByteString(rStrm.GetStreamEncoding()));
+                rItem.SetGraphicFilter(rStrm.ReadUniOrByteString());
             }
 
             rStrm.ReadSChar( nPos );
diff --git a/editeng/source/items/numitem.cxx b/editeng/source/items/numitem.cxx
index 89b46ccf771b..f9f6a64993a0 100644
--- a/editeng/source/items/numitem.cxx
+++ b/editeng/source/items/numitem.cxx
@@ -223,9 +223,9 @@ SvxNumberFormat::SvxNumberFormat( SvStream &rStream )
 
     rStream.ReadInt16( nCharTextDistance );
 
-    sPrefix = rStream.ReadUniOrByteString( rStream.GetStreamEncoding() );
-    sSuffix = rStream.ReadUniOrByteString( rStream.GetStreamEncoding() );
-    sCharStyleName = rStream.ReadUniOrByteString( rStream.GetStreamEncoding() 
);
+    sPrefix = rStream.ReadUniOrByteString();
+    sSuffix = rStream.ReadUniOrByteString();
+    sCharStyleName = rStream.ReadUniOrByteString();
 
     sal_uInt16 hasGraphicBrush = 0;
     rStream.ReadUInt16( hasGraphicBrush );
diff --git a/include/tools/stream.hxx b/include/tools/stream.hxx
index 6f450aede485..dce4457d7303 100644
--- a/include/tools/stream.hxx
+++ b/include/tools/stream.hxx
@@ -345,6 +345,10 @@ public:
         eSrcEncoding==RTL_TEXTENCODING_UNICODE, otherwise read a 16bit length
         prefixed sequence of bytes and convert from eSrcEncoding */
     OUString ReadUniOrByteString(rtl_TextEncoding eSrcEncoding);
+    /** Read a 32bit length prefixed sequence of utf-16 if
+        GetStreamEncoding()==RTL_TEXTENCODING_UNICODE, otherwise read a 16bit 
length
+        prefixed sequence of bytes and convert from GetStreamEncoding() */
+    OUString ReadUniOrByteString();
     /** Write a 32bit length prefixed sequence of utf-16 if
         eDestEncoding==RTL_TEXTENCODING_UNICODE, otherwise convert to 
eDestEncoding
         and write a 16bit length prefixed sequence of bytes */
diff --git a/sc/source/core/tool/ddelink.cxx b/sc/source/core/tool/ddelink.cxx
index c398db35f9f7..3e71fa3f3b10 100644
--- a/sc/source/core/tool/ddelink.cxx
+++ b/sc/source/core/tool/ddelink.cxx
@@ -83,10 +83,9 @@ ScDdeLink::ScDdeLink( ScDocument& rD, SvStream& rStream, 
ScMultipleReadHeader& r
 {
     rHdr.StartEntry();
 
-    rtl_TextEncoding eCharSet = rStream.GetStreamEncoding();
-    aAppl = rStream.ReadUniOrByteString( eCharSet );
-    aTopic = rStream.ReadUniOrByteString( eCharSet );
-    aItem = rStream.ReadUniOrByteString( eCharSet );
+    aAppl = rStream.ReadUniOrByteString();
+    aTopic = rStream.ReadUniOrByteString();
+    aItem = rStream.ReadUniOrByteString();
 
     bool bHasValue;
     rStream.ReadCharAsBool( bHasValue );
diff --git a/svl/source/items/stringio.cxx b/svl/source/items/stringio.cxx
index f408ec00ef63..03476a5c456f 100644
--- a/svl/source/items/stringio.cxx
+++ b/svl/source/items/stringio.cxx
@@ -21,10 +21,7 @@
 
 #include <tools/stream.hxx>
 
-OUString readByteString(SvStream& rStream)
-{
-    return rStream.ReadUniOrByteString(rStream.GetStreamEncoding());
-}
+OUString readByteString(SvStream& rStream) { return 
rStream.ReadUniOrByteString(); }
 
 void writeByteString(SvStream& rStream, std::u16string_view rString)
 {
diff --git a/svtools/source/misc/templatefoldercache.cxx 
b/svtools/source/misc/templatefoldercache.cxx
index 97b01d45852e..200f5fe46ce9 100644
--- a/svtools/source/misc/templatefoldercache.cxx
+++ b/svtools/source/misc/templatefoldercache.cxx
@@ -356,7 +356,7 @@ namespace svt
             // initialize them with their (local) names
             while ( nChildren-- )
             {
-                OUString sURL = 
m_rStorage.ReadUniOrByteString(m_rStorage.GetStreamEncoding());
+                OUString sURL = m_rStorage.ReadUniOrByteString();
                 sURL = m_xOfficeInstDirs->makeAbsoluteURL( sURL );
                 rChildren.push_back( new TemplateContent( INetURLObject( sURL 
) ) );
             }
@@ -671,7 +671,7 @@ namespace svt
         m_aPreviousState.reserve( nRootDirectories );
         while ( nRootDirectories-- )
         {
-            OUString sURL = 
m_pCacheStream->ReadUniOrByteString(m_pCacheStream->GetStreamEncoding());
+            OUString sURL = m_pCacheStream->ReadUniOrByteString();
             // #116281# Keep office installation relocatable. Never store
             // any direct references to office installation directory.
             sURL = getOfficeInstDirs()->makeAbsoluteURL( sURL );
diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx
index 8a52e03dafb2..9926979b0b17 100644
--- a/tools/source/stream/stream.cxx
+++ b/tools/source/stream/stream.cxx
@@ -1136,6 +1136,11 @@ sal_uInt64 SvStream::WriteStream( SvStream& rStream, 
sal_uInt64 nSize )
     return nSize - nWriteSize;
 }
 
+OUString SvStream::ReadUniOrByteString()
+{
+    return ReadUniOrByteString(GetStreamEncoding());
+}
+
 OUString SvStream::ReadUniOrByteString(rtl_TextEncoding eSrcEncoding)
 {
     // read UTF-16 string directly from stream ?
diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx
index 5801873a8319..22016e7f0b84 100644
--- a/vcl/source/font/font.cxx
+++ b/vcl/source/font/font.cxx
@@ -474,8 +474,8 @@ SvStream& ReadImplFont( SvStream& rIStm, ImplFont& 
rImplFont, tools::Long& rnNor
     bool            bTmp(false);
     sal_uInt8       nTmp8(0);
 
-    rImplFont.SetFamilyName( 
rIStm.ReadUniOrByteString(rIStm.GetStreamEncoding()) );
-    rImplFont.maStyleName = 
rIStm.ReadUniOrByteString(rIStm.GetStreamEncoding());
+    rImplFont.SetFamilyName( rIStm.ReadUniOrByteString() );
+    rImplFont.maStyleName = rIStm.ReadUniOrByteString();
     TypeSerializer aSerializer(rIStm);
     aSerializer.readSize(rImplFont.maAverageFontSize);
 
diff --git a/vcl/source/treelist/transfer.cxx b/vcl/source/treelist/transfer.cxx
index 0f6c3b341843..5b5e765eb188 100644
--- a/vcl/source/treelist/transfer.cxx
+++ b/vcl/source/treelist/transfer.cxx
@@ -133,8 +133,8 @@ static void TryReadTransferableObjectDescriptor(SvStream& 
rIStm,
     sal_Int32 dragStartPosX, dragStartPosY;
     rIStm.ReadInt32(dragStartPosX).ReadInt32(dragStartPosY);
 
-    const OUString typeName = 
rIStm.ReadUniOrByteString(osl_getThreadTextEncoding());
-    const OUString displayName = 
rIStm.ReadUniOrByteString(osl_getThreadTextEncoding());
+    const OUString typeName = rIStm.ReadUniOrByteString();
+    const OUString displayName = rIStm.ReadUniOrByteString();
 
     sal_uInt32 nSig1, nSig2;
     rIStm.ReadUInt32(nSig1).ReadUInt32(nSig2);
commit 5ad9d928c75a66edfc901cfb7a41608237ad9c6b
Author:     Noel Grandin <[email protected]>
AuthorDate: Wed Feb 25 14:25:49 2026 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Fri Feb 27 07:48:36 2026 +0100

    SvStream::WriteUniOrByteChar should not need to specify encoding
    
    Instead, rely on the stream being set into the correct encoding
    during stream initialisation.
    
    Change-Id: Ie019e9f7a668b943e418126b14b8bf852a4fa966
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200459
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/include/tools/stream.hxx b/include/tools/stream.hxx
index 6729412bc267..6f450aede485 100644
--- a/include/tools/stream.hxx
+++ b/include/tools/stream.hxx
@@ -374,14 +374,12 @@ public:
     bool            WriteUnicodeOrByteText(std::u16string_view rStr)
                     { return WriteUnicodeOrByteText(rStr, GetStreamEncoding(), 
/*bZero*/false); }
 
-    /** Write a Unicode character if eDestEncoding==RTL_TEXTENCODING_UNICODE,
-        otherwise write as Bytecode converted to eDestEncoding.
+    /** Write a Unicode character if 
GetStreamEncoding()==RTL_TEXTENCODING_UNICODE,
+        otherwise write as Bytecode converted to GetStreamEncoding().
 
         This may result in more than one byte being written if a multi byte
         encoding (e.g. UTF7, UTF8) is chosen. */
-    bool            WriteUniOrByteChar( sal_Unicode ch, rtl_TextEncoding 
eDestEncoding );
-    bool            WriteUniOrByteChar( sal_Unicode ch )
-                    { return WriteUniOrByteChar( ch, GetStreamEncoding() ); }
+    bool            WriteUniOrByteChar( sal_Unicode ch );
 
     void            SetBufferSize( sal_uInt16 m_nBufSize );
     sal_uInt16      GetBufferSize() const { return m_nBufSize; }
diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx
index 133372e39660..bb03b8b9532b 100644
--- a/sc/source/filter/dif/difexp.cxx
+++ b/sc/source/filter/dif/difexp.cxx
@@ -210,9 +210,9 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, 
ScDocument& rDoc,
                     OUString strFrom(cStrDelim);
                     OUString strTo = strFrom + strFrom;
                     aTmpStr = aTmpStr.replaceAll(strFrom, strTo);
-                    rOut.WriteUniOrByteChar( cStrDelim, eCharSet );
+                    rOut.WriteUniOrByteChar( cStrDelim );
                     rOut.WriteUnicodeOrByteText(aTmpStr, eCharSet);
-                    rOut.WriteUniOrByteChar( cStrDelim, eCharSet );
+                    rOut.WriteUniOrByteChar( cStrDelim );
                 }
                 else if ( bContextOrNotAsciiEncoding )
                 {
@@ -224,9 +224,9 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, 
ScDocument& rDoc,
                     OUString aStrTo = aStrDelimDecoded + aStrDelimDecoded;
                     aStrDec = aStrDec.replaceAll(aStrDelimDecoded, aStrTo);
                     // write byte re-encoded
-                    rOut.WriteUniOrByteChar( cStrDelim, eCharSet );
+                    rOut.WriteUniOrByteChar( cStrDelim );
                     rOut.WriteUnicodeOrByteText( aStrDec, eCharSet );
-                    rOut.WriteUniOrByteChar( cStrDelim, eCharSet );
+                    rOut.WriteUniOrByteChar( cStrDelim );
                 }
                 else
                 {
@@ -239,7 +239,7 @@ void ScFormatFilterPluginImpl::ScExportDif( SvStream& rOut, 
ScDocument& rDoc,
                     rOut.WriteBytes(aStrEnc.getStr(), aStrEnc.getLength());
                     rOut.WriteBytes(aStrDelimEncoded.getStr(), 
aStrDelimEncoded.getLength());
                 }
-                rOut.WriteUniOrByteChar( '
', eCharSet );
+                rOut.WriteUniOrByteChar( '
' );
             }
         }
         aPrgrsBar.SetState( nRowCnt );
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index b72ef6a16219..dced37e186ad 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -2099,10 +2099,10 @@ void ScDocShell::AsciiSave( SvStream& rStream, const 
ScImportOptions& rAsciiOpt,
                     // import.
                     aString = "sep=" + OUStringChar(cDelim);
                     if (cStrDelim != 0)
-                        rStream.WriteUniOrByteChar( '"', eCharSet);
+                        rStream.WriteUniOrByteChar( '"');
                     rStream.WriteUnicodeOrByteText(aString, eCharSet);
                     if (cStrDelim != 0)
-                        rStream.WriteUniOrByteChar( '"', eCharSet);
+                        rStream.WriteUniOrByteChar( '"');
                     endlub( rStream );
                     ++nStartRow;
                 }
@@ -2316,10 +2316,10 @@ void ScDocShell::AsciiSave( SvStream& rStream, const 
ScImportOptions& rAsciiOpt,
                         }
 
                         if ( bNeedQuotes || bForceQuotes )
-                            rStream.WriteUniOrByteChar( cStrDelim, eCharSet );
+                            rStream.WriteUniOrByteChar( cStrDelim );
                         rStream.WriteUnicodeOrByteText(aUniString, eCharSet);
                         if ( bNeedQuotes || bForceQuotes )
-                            rStream.WriteUniOrByteChar( cStrDelim, eCharSet );
+                            rStream.WriteUniOrByteChar( cStrDelim );
                     }
                     else
                     {
@@ -2355,10 +2355,10 @@ void ScDocShell::AsciiSave( SvStream& rStream, const 
ScImportOptions& rAsciiOpt,
 
                             // write byte re-encoded
                             if ( bNeedQuotes || bForceQuotes )
-                                rStream.WriteUniOrByteChar( cStrDelim, 
eCharSet );
+                                rStream.WriteUniOrByteChar( cStrDelim );
                             rStream.WriteUnicodeOrByteText( aStrDec, eCharSet 
);
                             if ( bNeedQuotes || bForceQuotes )
-                                rStream.WriteUniOrByteChar( cStrDelim, 
eCharSet );
+                                rStream.WriteUniOrByteChar( cStrDelim );
                         }
                         else
                         {
diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx
index 617a02684b40..8a52e03dafb2 100644
--- a/tools/source/stream/stream.cxx
+++ b/tools/source/stream/stream.cxx
@@ -672,8 +672,9 @@ bool SvStream::WriteLine(std::string_view rStr)
     return m_nError == ERRCODE_NONE;
 }
 
-bool SvStream::WriteUniOrByteChar(sal_Unicode ch, rtl_TextEncoding 
eDestEncoding)
+bool SvStream::WriteUniOrByteChar(sal_Unicode ch)
 {
+    auto eDestEncoding = GetStreamEncoding();
     if (eDestEncoding == RTL_TEXTENCODING_UNICODE)
         WriteUnicode(ch);
     else

Reply via email to