summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2023-11-15 20:06:28 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2023-11-16 17:19:26 +0100
commita6627b526a362d0aed9a5ea5856dca3b9e3655af (patch)
tree5f3e809de4841281c05487082bac8bc792e52fb4 /writerfilter
parent15f54c82d136e6fee3a65494f3b5271857b5d6b8 (diff)
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 <michael.stahl@allotropia.de>
Diffstat (limited to 'writerfilter')
-rw-r--r--writerfilter/inc/dmapper/resourcemodel.hxx2
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx10
-rw-r--r--writerfilter/source/dmapper/DomainMapper.hxx2
-rw-r--r--writerfilter/source/dmapper/FontTable.cxx2
-rw-r--r--writerfilter/source/dmapper/FontTable.hxx2
-rw-r--r--writerfilter/source/dmapper/GraphicImport.cxx2
-rw-r--r--writerfilter/source/dmapper/GraphicImport.hxx2
-rw-r--r--writerfilter/source/dmapper/LoggedResources.cxx4
-rw-r--r--writerfilter/source/dmapper/LoggedResources.hxx4
-rw-r--r--writerfilter/source/dmapper/TableManager.cxx4
-rw-r--r--writerfilter/source/dmapper/TableManager.hxx2
-rw-r--r--writerfilter/source/ooxml/OOXMLFastContextHandler.cxx28
-rw-r--r--writerfilter/source/rtftok/rtfdispatchsymbol.cxx4
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx9
14 files changed, 36 insertions, 41 deletions
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 20462e20e45d..e2ef4ec4a4b2 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2438,7 +2438,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();
}
@@ -3432,7 +3432,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;
@@ -3628,7 +3628,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();
}
@@ -4103,12 +4103,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 3ddebaedf419..588eb841013c 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 a3ec72bb6917..1b6c04c73f54 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 f4825bd6c671..63330c477cbd 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -2010,7 +2010,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 d40ca89ae68b..b5c5c0bd04d3 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 6cc1da731432..30ed3a70e63c 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -385,7 +385,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);
}
}
@@ -583,13 +583,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()
@@ -601,13 +601,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()
@@ -619,19 +619,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()
@@ -648,7 +648,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();
}
@@ -713,9 +713,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)
@@ -997,9 +995,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());
}
@@ -1529,7 +1525,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 958000e4587a..4bc611992c88 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;
}
@@ -1616,7 +1616,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);
@@ -1765,8 +1765,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();
@@ -2572,7 +2571,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);