crashtesting: assert on exporting forum-mso-en4-531883.xls to xlsx

since:
  commit 5c841b381fe16634c51121b351c89154a25eb8d9
  Date:   Tue Mar 17 16:33:19 2026 +0530
  XLSX: Truncate external sheet names if the length is > 31

Bug document: forum-mso-en4-109082.xls

Change-Id: I0050bd63a28c74d2e337073f2815c6ffd17478c9
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1433
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit b71a8f85dd1b99a8d879bcf5ddebd185a4354c85)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206190
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Noel Grandin
2026-06-08 09:30:11 +02:00
committed by Xisco Fauli
parent 9de2f95044
commit c11c29d401
+23
View File
@@ -894,6 +894,18 @@ OUString XclImpStream::ReadUniString( sal_uInt16 nChars, sal_uInt8 nFlags )
std::size_t nExtSize = ReadUniStringExtHeader( b16Bit, nFlags );
OUString aRet( ReadRawUniString( nChars, b16Bit ) );
Ignore( nExtSize );
OString aUtf8Check;
if (!aRet.convertToString(
&aUtf8Check, RTL_TEXTENCODING_UTF8,
RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR
| RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR))
{
SAL_WARN("sc", "invalid utf8 string, doing best-effort fix");
aRet.convertToString(&aUtf8Check, RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
aRet = OStringToOUString(aUtf8Check, RTL_TEXTENCODING_UTF8);
}
return aRet;
}
@@ -953,6 +965,17 @@ OUString XclImpStream::ReadRawByteString( sal_uInt16 nChars )
sal_uInt16 nCharsRead = ReadRawData( pcBuffer.get(), nChars );
pcBuffer[ nCharsRead ] = '\0';
OUString aRet( pcBuffer.get(), strlen(pcBuffer.get()), mrRoot.GetTextEncoding() );
OString aUtf8Check;
if (!aRet.convertToString(
&aUtf8Check, RTL_TEXTENCODING_UTF8,
RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR
| RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR))
{
SAL_WARN("sc", "invalid utf8 string, doing best-effort fix");
aRet.convertToString(&aUtf8Check, RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
aRet = OStringToOUString(aUtf8Check, RTL_TEXTENCODING_UTF8);
}
return aRet;
}