writerfilter/inc/dmapper/resourcemodel.hxx | 2 - writerfilter/source/dmapper/DomainMapper.cxx | 10 +++--- writerfilter/source/dmapper/DomainMapper.hxx | 2 - writerfilter/source/dmapper/FontTable.cxx | 2 - writerfilter/source/dmapper/FontTable.hxx | 2 - writerfilter/source/dmapper/GraphicImport.cxx | 2 - writerfilter/source/dmapper/GraphicImport.hxx | 2 - writerfilter/source/dmapper/LoggedResources.cxx | 4 +- writerfilter/source/dmapper/LoggedResources.hxx | 4 +- writerfilter/source/dmapper/TableManager.cxx | 4 +- writerfilter/source/dmapper/TableManager.hxx | 2 - writerfilter/source/ooxml/OOXMLFastContextHandler.cxx | 28 +++++++----------- writerfilter/source/rtftok/rtfdispatchsymbol.cxx | 4 +- writerfilter/source/rtftok/rtfdocumentimpl.cxx | 9 ++--- 14 files changed, 36 insertions(+), 41 deletions(-)
New commits: commit 93c617dcdddc85b4704dc06727a48fb7c6819317 Author: Michael Stahl <[email protected]> AuthorDate: Wed Nov 15 20:06:28 2023 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Thu Nov 30 10:22:23 2023 +0100 writerfilter: fix utext()'s dumb sal_uInt8* parameter This removes all but 4 reinterpret_cast in the module! TableManager::utext() even assumed that the bytes are little-endian. Change-Id: I12031336cabedfd6c0fb614ee0e3400810f98e2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159486 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> (cherry picked from commit a6627b526a362d0aed9a5ea5856dca3b9e3655af) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159593 Reviewed-by: Xisco Fauli <[email protected]> diff --git a/writerfilter/inc/dmapper/resourcemodel.hxx b/writerfilter/inc/dmapper/resourcemodel.hxx index e277ed675fc1..695c6c9420d7 100644 --- a/writerfilter/inc/dmapper/resourcemodel.hxx +++ b/writerfilter/inc/dmapper/resourcemodel.hxx @@ -259,7 +259,7 @@ public: @param data buffer containing the text @param len number of characters in the text. */ - virtual void utext(const sal_uInt8* data, size_t len) = 0; + virtual void utext(const sal_Unicode* data, size_t len) = 0; /** * Offset in EMUs for a shape. diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index f1be653f7af1..2d23452c6261 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2435,7 +2435,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) m_pImpl->GetTopContext()->Insert(PROP_BREAK_TYPE, uno::Any(style::BreakType_PAGE_BEFORE)); lcl_startCharacterGroup(); sal_Unicode const sBreak[] = { 0x0d }; - lcl_utext(reinterpret_cast<sal_uInt8 const*>(sBreak), 1); + lcl_utext(sBreak, 1); lcl_endCharacterGroup(); lcl_endParagraphGroup(); } @@ -3430,7 +3430,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) rContext->Insert(PROP_CHAR_FONT_NAME_ASIAN, aVal); rContext->Insert(PROP_CHAR_FONT_NAME_COMPLEX, aVal); rContext->Insert(PROP_CHAR_FONT_CHAR_SET, uno::Any(awt::CharSet::SYMBOL)); - utext( reinterpret_cast < const sal_uInt8 * >( &(aSymbolData.cSymbol) ), 1 ); + utext(&(aSymbolData.cSymbol), 1); } } break; @@ -3626,7 +3626,7 @@ void DomainMapper::lcl_endSectionGroup() lcl_startParagraphGroup(); lcl_startCharacterGroup(); sal_Unicode const sBreak[] = { 0x0d }; - lcl_utext(reinterpret_cast<sal_uInt8 const*>(sBreak), 1); + lcl_utext(sBreak, 1); lcl_endCharacterGroup(); lcl_endParagraphGroup(); } @@ -4101,12 +4101,12 @@ void DomainMapper::ResetStyleProperties() } } -void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len) +void DomainMapper::lcl_utext(const sal_Unicode *const data_, size_t len) { // All these fixed values are defined as static const sal_Unicode codepoints in the fast parser, // like uFtnEdnRef = 0x2, uFtnEdnSep = 0x3, ... and have a len of 1, if they aren't valid unicode. - OUString sText(reinterpret_cast<const sal_Unicode *>(data_), len); + OUString const sText(data_, len); const RubyInfo & aInfo = m_pImpl->GetRubyInfo(); if (aInfo.nSprmId == NS_ooxml::LN_CT_Ruby_rt) { diff --git a/writerfilter/source/dmapper/DomainMapper.hxx b/writerfilter/source/dmapper/DomainMapper.hxx index 4fcd55195c84..f9c163ab1f29 100644 --- a/writerfilter/source/dmapper/DomainMapper.hxx +++ b/writerfilter/source/dmapper/DomainMapper.hxx @@ -154,7 +154,7 @@ private: virtual void lcl_startTextBoxContent() override; virtual void lcl_endTextBoxContent() override; virtual void lcl_text(const sal_uInt8 * data, size_t len) override; - virtual void lcl_utext(const sal_uInt8 * data, size_t len) override; + virtual void lcl_utext(const sal_Unicode * data, size_t len) override; virtual void lcl_positionOffset(const OUString& rText, bool bVertical) override; virtual css::awt::Point getPositionOffset() override; virtual void lcl_align(const OUString& rText, bool bVertical) override; diff --git a/writerfilter/source/dmapper/FontTable.cxx b/writerfilter/source/dmapper/FontTable.cxx index d7c6b4fe3f5b..ca8a40f1a7e8 100644 --- a/writerfilter/source/dmapper/FontTable.cxx +++ b/writerfilter/source/dmapper/FontTable.cxx @@ -189,7 +189,7 @@ void FontTable::lcl_text(const sal_uInt8*, size_t ) { } -void FontTable::lcl_utext(const sal_uInt8* , size_t) +void FontTable::lcl_utext(const sal_Unicode*, size_t) { } diff --git a/writerfilter/source/dmapper/FontTable.hxx b/writerfilter/source/dmapper/FontTable.hxx index ba1d2387a39b..d91305379d2c 100644 --- a/writerfilter/source/dmapper/FontTable.hxx +++ b/writerfilter/source/dmapper/FontTable.hxx @@ -72,7 +72,7 @@ class FontTable : public LoggedProperties, public LoggedTable virtual void lcl_startCharacterGroup() override; virtual void lcl_endCharacterGroup() override; virtual void lcl_text(const sal_uInt8 * data, size_t len) override; - virtual void lcl_utext(const sal_uInt8 * data, size_t len) override; + virtual void lcl_utext(const sal_Unicode * data, size_t len) override; virtual void lcl_props(writerfilter::Reference<Properties>::Pointer_t ref) override; virtual void lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t ref) override; diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx index c6dd379e9481..dfc084f9c3ee 100644 --- a/writerfilter/source/dmapper/GraphicImport.cxx +++ b/writerfilter/source/dmapper/GraphicImport.cxx @@ -2002,7 +2002,7 @@ void GraphicImport::lcl_text(const sal_uInt8 * /*_data*/, size_t /*len*/) } -void GraphicImport::lcl_utext(const sal_uInt8 * /*_data*/, size_t /*len*/) +void GraphicImport::lcl_utext(const sal_Unicode * /*_data*/, size_t /*len*/) { } diff --git a/writerfilter/source/dmapper/GraphicImport.hxx b/writerfilter/source/dmapper/GraphicImport.hxx index 9729aecace62..d2462433ade5 100644 --- a/writerfilter/source/dmapper/GraphicImport.hxx +++ b/writerfilter/source/dmapper/GraphicImport.hxx @@ -118,7 +118,7 @@ public: virtual void lcl_startCharacterGroup() override; virtual void lcl_endCharacterGroup() override; virtual void lcl_text(const sal_uInt8 * data, size_t len) override; - virtual void lcl_utext(const sal_uInt8 * data, size_t len) override; + virtual void lcl_utext(const sal_Unicode * data, size_t len) override; virtual void lcl_props(writerfilter::Reference<Properties>::Pointer_t ref) override; virtual void lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t ref) override; diff --git a/writerfilter/source/dmapper/LoggedResources.cxx b/writerfilter/source/dmapper/LoggedResources.cxx index 819238bf671d..739b2f4dc08d 100644 --- a/writerfilter/source/dmapper/LoggedResources.cxx +++ b/writerfilter/source/dmapper/LoggedResources.cxx @@ -171,13 +171,13 @@ void LoggedStream::text(const sal_uInt8* data, size_t len) #endif } -void LoggedStream::utext(const sal_uInt8* data, size_t len) +void LoggedStream::utext(const sal_Unicode* const data, size_t const len) { #ifdef DBG_UTIL mHelper.startElement("utext"); mHelper.startElement("data"); - OUString sText(reinterpret_cast<const sal_Unicode*>(data), len); + OUString const sText(data, len); LoggedResourcesHelper::chars(sText); diff --git a/writerfilter/source/dmapper/LoggedResources.hxx b/writerfilter/source/dmapper/LoggedResources.hxx index aa7b84e0a083..6e49b0f363d5 100644 --- a/writerfilter/source/dmapper/LoggedResources.hxx +++ b/writerfilter/source/dmapper/LoggedResources.hxx @@ -63,7 +63,7 @@ public: void startTextBoxContent() override; void endTextBoxContent() override; void text(const sal_uInt8* data, size_t len) override; - void utext(const sal_uInt8* data, size_t len) override; + void utext(const sal_Unicode* data, size_t len) override; void positionOffset(const OUString& rText, bool bVertical) override; void align(const OUString& rText, bool bVertical) override; void positivePercentage(const OUString& rText) override; @@ -89,7 +89,7 @@ protected: virtual void lcl_startTextBoxContent() = 0; virtual void lcl_endTextBoxContent() = 0; virtual void lcl_text(const sal_uInt8* data, size_t len) = 0; - virtual void lcl_utext(const sal_uInt8* data, size_t len) = 0; + virtual void lcl_utext(const sal_Unicode* data, size_t len) = 0; virtual void lcl_positionOffset(const OUString& /*rText*/, bool /*bVertical*/) {} virtual css::awt::Point getPositionOffset() override { return css::awt::Point(); } virtual void lcl_align(const OUString& /*rText*/, bool /*bVertical*/) {} diff --git a/writerfilter/source/dmapper/TableManager.cxx b/writerfilter/source/dmapper/TableManager.cxx index 5554a93d9fcf..6a0c70a39f52 100644 --- a/writerfilter/source/dmapper/TableManager.cxx +++ b/writerfilter/source/dmapper/TableManager.cxx @@ -215,13 +215,13 @@ void TableManager::tableExceptionProps(const TablePropertyMapPtr& pProps) #endif } -void TableManager::utext(const sal_uInt8* data, std::size_t len) +void TableManager::utext(const sal_Unicode* const data, std::size_t const len) { // optimization: cell/row end characters are the last characters in a run if (len > 0) { - sal_Unicode nChar = data[(len - 1) * 2] + (data[(len - 1) * 2 + 1] << 8); + sal_Unicode const nChar = data[len - 1]; if (nChar == 0x7) handle0x7(); } diff --git a/writerfilter/source/dmapper/TableManager.hxx b/writerfilter/source/dmapper/TableManager.hxx index f23b371f4a94..0707e04d5ec3 100644 --- a/writerfilter/source/dmapper/TableManager.hxx +++ b/writerfilter/source/dmapper/TableManager.hxx @@ -466,7 +466,7 @@ public: @param data array of characters @param len number of characters to handle */ - void utext(const sal_uInt8 * data, size_t len); + void utext(const sal_Unicode * data, size_t len); /** Handle properties of the current cell. diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx index ccd90714526b..a8b9dcb22a72 100644 --- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx +++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx @@ -384,7 +384,7 @@ void OOXMLFastContextHandler::startCharacterGroup() mpParserState->resolveCharacterProperties(*mpStream); if (mpParserState->isStartFootnote()) { - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uFtnSep), 1); + mpStream->utext(&uFtnSep, 1); mpParserState->setStartFootnote(false); } } @@ -582,13 +582,13 @@ void OOXMLFastContextHandler::lockField() void OOXMLFastContextHandler::ftnednref() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uFtnEdnRef), 1); + mpStream->utext(&uFtnEdnRef, 1); } void OOXMLFastContextHandler::ftnednsep() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uFtnEdnSep), 1); + mpStream->utext(&uFtnEdnSep, 1); } void OOXMLFastContextHandler::ftnedncont() @@ -600,13 +600,13 @@ void OOXMLFastContextHandler::ftnedncont() void OOXMLFastContextHandler::pgNum() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uPgNum), 1); + mpStream->utext(&uPgNum, 1); } void OOXMLFastContextHandler::tab() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uTab), 1); + mpStream->utext(&uTab, 1); } void OOXMLFastContextHandler::symbol() @@ -618,19 +618,19 @@ void OOXMLFastContextHandler::symbol() void OOXMLFastContextHandler::cr() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uCR), 1); + mpStream->utext(&uCR, 1); } void OOXMLFastContextHandler::noBreakHyphen() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uNoBreakHyphen), 1); + mpStream->utext(&uNoBreakHyphen, 1); } void OOXMLFastContextHandler::softHyphen() { if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uSoftHyphen), 1); + mpStream->utext(&uSoftHyphen, 1); } void OOXMLFastContextHandler::handleLastParagraphInSection() @@ -647,7 +647,7 @@ void OOXMLFastContextHandler::endOfParagraph() if (! mpParserState->isInCharacterGroup()) startCharacterGroup(); if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uCR), 1); + mpStream->utext(&uCR, 1); mpParserState->getDocument()->incrementProgress(); } @@ -712,9 +712,7 @@ void OOXMLFastContextHandler::text(const OUString & sText) { sNormalizedText = TrimXMLWhitespace(sNormalizedText).replaceAll("\t", " "); } - mpStream->utext(reinterpret_cast < const sal_uInt8 * > - (sNormalizedText.getStr()), - sNormalizedText.getLength()); + mpStream->utext(sNormalizedText.getStr(), sNormalizedText.getLength()); } void OOXMLFastContextHandler::positionOffset(const OUString& rText) @@ -996,9 +994,7 @@ void OOXMLFastContextHandlerStream::sendProperty(Id nId) OOXMLPropertySetEntryToString aHandler(nId); getPropertySetAttrs()->resolve(aHandler); const OUString & sText = aHandler.getString(); - mpStream->utext(reinterpret_cast < const sal_uInt8 * > - (sText.getStr()), - sText.getLength()); + mpStream->utext(sText.getStr(), sText.getLength()); } @@ -1528,7 +1524,7 @@ void OOXMLFastContextHandlerTextTableRow::endRow() startCharacterGroup(); if (isForwardEvents()) - mpStream->utext(reinterpret_cast<const sal_uInt8*>(&uCR), 1); + mpStream->utext(&uCR, 1); endCharacterGroup(); endParagraphGroup(); diff --git a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx index 23a97fc68524..d5b196790a50 100644 --- a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx +++ b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx @@ -404,7 +404,7 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword) checkNeedPap(); // flush previously deferred break - needed for testFdo49893_2 // which has consecutive \page with no text between - sal_uInt8 const nothing[] = { 0 /*MSVC doesn't allow it to be empty*/ }; + sal_Unicode const nothing[] = { 0 /*MSVC doesn't allow it to be empty*/ }; Mapper().utext(nothing, 0); } sal_uInt8 const sBreak[] = { 0xc }; @@ -427,7 +427,7 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword) case RTFKeyword::CHFTNSEP: { static const sal_Unicode uFtnEdnSep = 0x3; - Mapper().utext(reinterpret_cast<const sal_uInt8*>(&uFtnEdnSep), 1); + Mapper().utext(&uFtnEdnSep, 1); } break; default: diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 3453f69b829c..72d6626c1ba7 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -648,7 +648,7 @@ void RTFDocumentImpl::runProps() void RTFDocumentImpl::runBreak() { sal_Unicode const sBreak[] = { 0x0d }; - Mapper().utext(reinterpret_cast<sal_uInt8 const*>(sBreak), 1); + Mapper().utext(sBreak, 1); m_bNeedCr = false; } @@ -1614,7 +1614,7 @@ void RTFDocumentImpl::text(OUString& rString) runProps(); if (!pCurrentBuffer) - Mapper().utext(reinterpret_cast<sal_uInt8 const*>(rString.getStr()), rString.getLength()); + Mapper().utext(rString.getStr(), rString.getLength()); else { auto pValue = new RTFValue(rString); @@ -1763,8 +1763,7 @@ void RTFDocumentImpl::replayBuffer(RTFBuffer_t& rBuffer, RTFSprms* const pSprms, else if (std::get<0>(aTuple) == BUFFER_UTEXT) { OUString const aString(std::get<1>(aTuple)->getString()); - Mapper().utext(reinterpret_cast<sal_uInt8 const*>(aString.getStr()), - aString.getLength()); + Mapper().utext(aString.getStr(), aString.getLength()); } else if (std::get<0>(aTuple) == BUFFER_ENDRUN) Mapper().endCharacterGroup(); @@ -2570,7 +2569,7 @@ RTFError RTFDocumentImpl::beforePopState(RTFParserState& rState) : std::u16string_view(u"TC")); str = OUString::Concat(field) + " \"" + str.replaceAll("\"", "\\\"") + "\""; singleChar(cFieldStart); - Mapper().utext(reinterpret_cast<sal_uInt8 const*>(str.getStr()), str.getLength()); + Mapper().utext(str.getStr(), str.getLength()); singleChar(cFieldSep); // no result singleChar(cFieldEnd);
