oox/source/export/drawingml.cxx | 12 +++---- oox/source/export/vmlexport.cxx | 2 - sax/source/tools/fastattribs.cxx | 2 - sc/source/filter/excel/xepage.cxx | 4 +- sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 4 +- sw/source/filter/ww8/docxattributeoutput.cxx | 44 +++++++++++++-------------- sw/source/filter/ww8/docxsdrexport.cxx | 7 +--- xmloff/source/core/xmlimp.cxx | 4 +- 8 files changed, 39 insertions(+), 40 deletions(-)
New commits: commit 54054aaea74d524a05f899f8af27e2a65e17be52 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Tue Apr 13 13:04:02 2021 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Tue Apr 13 20:39:45 2021 +0200 tdf#79591: No need to use getStr here 7ea1bbe712cef48a97faffdf03b45f2812a93e62 had abused the C-style strings, and relied on the names containing zero byte to be truncated on the byte. However, that would only work for names with zero bytes, not with other control characters. Additionally, that prevented the initial names from correct round-trip. This reverts the older fix, and makes sure to handle the attributes with zeroes correctly (using memcpy instead of strncpy). It also removes several similar unneeded uses of getStr. Change-Id: I6c52874d99fe9eb9ccbe0c9a9b57e3b51c45a19f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114040 Tested-by: Mike Kaganski <mike.kagan...@collabora.com> Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 32780296ce89..586b40c78304 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -3972,7 +3972,7 @@ void DrawingML::WriteShapeEffect( std::u16string_view sName, const Sequence< Pro { OUString sVal; rOuterShdwProp.Value >>= sVal; - aOuterShdwAttrList->add( XML_algn, OUStringToOString( sVal, RTL_TEXTENCODING_UTF8 ).getStr() ); + aOuterShdwAttrList->add( XML_algn, OUStringToOString( sVal, RTL_TEXTENCODING_UTF8 ) ); } else if( rOuterShdwProp.Name == "blurRad" ) { @@ -4408,7 +4408,7 @@ void DrawingML::WriteShape3DEffects( const Reference< XPropertySet >& xPropSet ) { OUString sVal; rEffectProp.Value >>= sVal; - aCameraAttrList->add( XML_prst, OUStringToOString( sVal, RTL_TEXTENCODING_UTF8 ).getStr() ); + aCameraAttrList->add(XML_prst, OUStringToOString(sVal, RTL_TEXTENCODING_UTF8)); } else if( rEffectProp.Name == "fov" ) { @@ -4453,7 +4453,7 @@ void DrawingML::WriteShape3DEffects( const Reference< XPropertySet >& xPropSet ) nToken = XML_rig; else if( rLightRigProp.Name == "dir" ) nToken = XML_dir; - aLightRigAttrList->add( nToken, OUStringToOString( sVal, RTL_TEXTENCODING_UTF8 ).getStr() ); + aLightRigAttrList->add(nToken, OUStringToOString(sVal, RTL_TEXTENCODING_UTF8)); } else if( rLightRigProp.Name == "rotLat" || rLightRigProp.Name == "rotLon" || @@ -4532,7 +4532,7 @@ void DrawingML::WriteShape3DEffects( const Reference< XPropertySet >& xPropSet ) { OUString sVal; rShape3DProp.Value >>= sVal; - aShape3DAttrList->add( XML_prstMaterial, OUStringToOString( sVal, RTL_TEXTENCODING_UTF8 ).getStr() ); + aShape3DAttrList->add(XML_prstMaterial, OUStringToOString(sVal, RTL_TEXTENCODING_UTF8)); } else if( rShape3DProp.Name == "extrusionClr" ) { @@ -4576,7 +4576,7 @@ void DrawingML::WriteShape3DEffects( const Reference< XPropertySet >& xPropSet ) { OUString sVal; rBevelProp.Value >>= sVal; - aBevelAttrList->add( XML_prst, OUStringToOString( sVal, RTL_TEXTENCODING_UTF8 ).getStr() ); + aBevelAttrList->add(XML_prst, OUStringToOString(sVal, RTL_TEXTENCODING_UTF8)); } } @@ -4783,7 +4783,7 @@ void DrawingML::WriteDiagram(const css::uno::Reference<css::drawing::XShape>& rX = sax_fastparser::FastSerializerHelper::createAttrList(); pDocPrAttrList->add(XML_id, OString::number(nDiagramId).getStr()); OUString sName = "Diagram" + OUString::number(nDiagramId); - pDocPrAttrList->add(XML_name, OUStringToOString(sName, RTL_TEXTENCODING_UTF8).getStr()); + pDocPrAttrList->add(XML_name, OUStringToOString(sName, RTL_TEXTENCODING_UTF8)); if (GetDocumentType() == DOCUMENT_DOCX) { diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx index 9f8df2279611..36d35a7ed18b 100644 --- a/oox/source/export/vmlexport.cxx +++ b/oox/source/export/vmlexport.cxx @@ -1036,7 +1036,7 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const tools::Rectangle& OUString idStr = SvxMSDffManager::MSDFFReadZString(aStream, opt.nProp.size(), true); aStream.Seek(0); if (!IsWaterMarkShape(m_pSdrObject->GetName()) && !m_bSkipwzName) - m_pShapeAttrList->add(XML_ID, OUStringToOString(idStr, RTL_TEXTENCODING_UTF8).getStr()); + m_pShapeAttrList->add(XML_ID, OUStringToOString(idStr, RTL_TEXTENCODING_UTF8)); bAlreadyWritten[ESCHER_Prop_wzName] = true; } diff --git a/sax/source/tools/fastattribs.cxx b/sax/source/tools/fastattribs.cxx index 0ef8828b187d..554232260aef 100644 --- a/sax/source/tools/fastattribs.cxx +++ b/sax/source/tools/fastattribs.cxx @@ -111,7 +111,7 @@ void FastAttributeList::add( sal_Int32 nToken, const char* pValue, size_t nValue mpChunk = p; } - strncpy(mpChunk + nWritePosition, pValue, nValueLength); + memcpy(mpChunk + nWritePosition, pValue, nValueLength); mpChunk[nWritePosition + nValueLength] = '\0'; } diff --git a/sc/source/filter/excel/xepage.cxx b/sc/source/filter/excel/xepage.cxx index e2f51d706def..b2796ed99e11 100644 --- a/sc/source/filter/excel/xepage.cxx +++ b/sc/source/filter/excel/xepage.cxx @@ -102,8 +102,8 @@ void XclExpSetup::SaveXml( XclExpXmlStream& rStrm ) } else { - pAttrList->add( XML_paperWidth, OString(OString::number( mrData.mnPaperWidth ) + "mm").getStr() ); - pAttrList->add( XML_paperHeight, OString(OString::number( mrData.mnPaperHeight ) + "mm").getStr() ); + pAttrList->add( XML_paperWidth, OString::number( mrData.mnPaperWidth ) + "mm" ); + pAttrList->add( XML_paperHeight, OString::number( mrData.mnPaperHeight ) + "mm" ); // pAttrList->add( XML_paperUnits, "mm" ); } pAttrList->add( XML_scale, OString::number( mrData.mnScaling ).getStr() ); diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index 54540c265977..c443120fecd5 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -851,8 +851,8 @@ DECLARE_OOXMLEXPORT_EXPORTONLY_TEST(testfdo79591, "fdo79591.docx") */ xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml"); - assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor/wp:docPr", "name", ""); - assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Fallback/w:pict/v:shape", "ID", ""); + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Choice/w:drawing/wp:anchor/wp:docPr", "name", "_x0000_t0"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p/w:r/mc:AlternateContent/mc:Fallback/w:pict/v:shape", "ID", "_x0000_t0"); } DECLARE_OOXMLEXPORT_TEST(testBnc884615, "bnc884615.docx") diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index a74e66fcec89..37e5049cbbe1 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -2637,7 +2637,7 @@ void lclProcessRecursiveGrabBag(sal_Int32 aElementId, const css::uno::Sequence<c std::optional<sal_Int32> aSubElementId = lclGetElementIdForName(rAttribute.Name); if(aSubElementId) - pAttributes->add(*aSubElementId, aValue.getStr()); + pAttributes->add(*aSubElementId, aValue); } pSerializer->startElement(aElementId, pAttributes); @@ -3039,7 +3039,7 @@ bool DocxAttributeOutput::StartURL( const OUString& rUrl, const OUString& rTarge oox::getRelationship(Relationship::HYPERLINK), sUrl, true ), RTL_TEXTENCODING_UTF8 ); - m_pHyperlinkAttrList->add( FSNS( XML_r, XML_id), sId.getStr()); + m_pHyperlinkAttrList->add(FSNS(XML_r, XML_id), sId); } else { @@ -3068,13 +3068,13 @@ bool DocxAttributeOutput::StartURL( const OUString& rUrl, const OUString& rTarge // Spaces are prohibited in bookmark name. sMark = sMark.replace(' ', '_'); m_pHyperlinkAttrList->add( FSNS( XML_w, XML_anchor ), - OUStringToOString( sMark, RTL_TEXTENCODING_UTF8 ).getStr( ) ); + OUStringToOString( sMark, RTL_TEXTENCODING_UTF8 ) ); } if ( !rTarget.isEmpty() ) { OString soTarget = OUStringToOString( rTarget, RTL_TEXTENCODING_UTF8 ); - m_pHyperlinkAttrList->add(FSNS( XML_w, XML_tgtFrame ), soTarget.getStr()); + m_pHyperlinkAttrList->add(FSNS(XML_w, XML_tgtFrame), soTarget); } } @@ -4001,16 +4001,16 @@ void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t OString sTblpYSpec = convertToOOXMLVertOrient( pFrame->GetFrameFormat().GetVertOrient().GetVertOrient() ); sOrientation = convertToOOXMLVertOrientRel( pFrame->GetFrameFormat().GetVertOrient().GetRelationOrient() ); - attrListTablePos->add( FSNS( XML_w, XML_vertAnchor ), sOrientation.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_vertAnchor), sOrientation); if( !sTblpYSpec.isEmpty() ) - attrListTablePos->add( FSNS( XML_w, XML_tblpYSpec ), sTblpYSpec.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_tblpYSpec), sTblpYSpec); sOrientation = convertToOOXMLHoriOrientRel( pFrame->GetFrameFormat().GetHoriOrient().GetRelationOrient() ); - attrListTablePos->add( FSNS( XML_w, XML_horzAnchor ), sOrientation.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_horzAnchor), sOrientation); if( !sTblpXSpec.isEmpty() ) - attrListTablePos->add( FSNS( XML_w, XML_tblpXSpec ), sTblpXSpec.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_tblpXSpec), sTblpXSpec); nValue = pFrame->GetFrameFormat().GetULSpace().GetLower(); if( nValue != 0 ) @@ -4065,22 +4065,22 @@ void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t if (rProp.Name == "vertAnchor" && !rProp.Value.get<OUString>().isEmpty()) { OString sOrientation = OUStringToOString( rProp.Value.get<OUString>(), RTL_TEXTENCODING_UTF8); - attrListTablePos->add( FSNS( XML_w, XML_vertAnchor ), sOrientation.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_vertAnchor), sOrientation); } else if (rProp.Name == "tblpYSpec" && !rProp.Value.get<OUString>().isEmpty()) { OString sOrientation = OUStringToOString( rProp.Value.get<OUString>(), RTL_TEXTENCODING_UTF8); - attrListTablePos->add( FSNS( XML_w, XML_tblpYSpec ), sOrientation.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_tblpYSpec), sOrientation); } else if (rProp.Name == "horzAnchor" && !rProp.Value.get<OUString>().isEmpty()) { OString sOrientation = OUStringToOString( rProp.Value.get<OUString>(), RTL_TEXTENCODING_UTF8); - attrListTablePos->add( FSNS( XML_w, XML_horzAnchor ), sOrientation.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_horzAnchor), sOrientation); } else if (rProp.Name == "tblpXSpec" && !rProp.Value.get<OUString>().isEmpty()) { OString sOrientation = OUStringToOString( rProp.Value.get<OUString>(), RTL_TEXTENCODING_UTF8); - attrListTablePos->add( FSNS( XML_w, XML_tblpXSpec ), sOrientation.getStr() ); + attrListTablePos->add(FSNS(XML_w, XML_tblpXSpec), sOrientation); } else if (rProp.Name == "bottomFromText") { @@ -5070,9 +5070,9 @@ void DocxAttributeOutput::FlyFrameGraphic( const SwGrfNode* pGrfNode, const Size rtl::Reference<::sax_fastparser::FastAttributeList> docPrattrList = FastSerializerHelper::createAttrList(); docPrattrList->add( XML_id, OString::number( m_anchorId++).getStr()); docPrattrList->add( XML_name, OUStringToOString( pFrameFormat->GetName(), RTL_TEXTENCODING_UTF8 ) ); - docPrattrList->add( XML_descr, OUStringToOString( pGrfNode ? pGrfNode->GetDescription() : pOLEFrameFormat->GetObjDescription(), RTL_TEXTENCODING_UTF8 ).getStr()); + docPrattrList->add( XML_descr, OUStringToOString( pGrfNode ? pGrfNode->GetDescription() : pOLEFrameFormat->GetObjDescription(), RTL_TEXTENCODING_UTF8 )); if( GetExport().GetFilter().getVersion( ) != oox::core::ECMA_DIALECT ) - docPrattrList->add( XML_title, OUStringToOString( pGrfNode ? pGrfNode->GetTitle() : pOLEFrameFormat->GetObjTitle(), RTL_TEXTENCODING_UTF8 ).getStr()); + docPrattrList->add( XML_title, OUStringToOString( pGrfNode ? pGrfNode->GetTitle() : pOLEFrameFormat->GetObjTitle(), RTL_TEXTENCODING_UTF8 )); m_pSerializer->startElementNS( XML_wp, XML_docPr, docPrattrList ); OUString sURL, sRelId; @@ -5696,14 +5696,14 @@ void DocxAttributeOutput::WriteOLEShape(const SwFlyFrameFormat& rFrameFormat, co //Here is an attribute list where we collect the attributes what we want to export rtl::Reference<FastAttributeList> pAttr = FastSerializerHelper::createAttrList(); - pAttr->add(XML_id, rShapeId.getStr()); + pAttr->add(XML_id, rShapeId); //export the fixed shape type for picture frame m_pSerializer->write(vml::VMLExport::GetVMLShapeTypeDefinition(rShapeId, true)); pAttr->add(XML_type, "_x0000_t" + rShapeId); //Export the style attribute for position and size - pAttr->add(XML_style, GetOLEStyle(rFrameFormat, rSize).getStr()); + pAttr->add(XML_style, GetOLEStyle(rFrameFormat, rSize)); //Get the OLE frame const SvxBoxItem& rBox = rFrameFormat.GetAttrSet().GetBox(); OString sLineType; @@ -6431,7 +6431,7 @@ void DocxAttributeOutput::StartStyle( const OUString& rName, StyleType eType, case STYLE_TYPE_LIST: pType = "numbering"; break; } pStyleAttributeList->add(FSNS( XML_w, XML_type ), pType); - pStyleAttributeList->add(FSNS( XML_w, XML_styleId ), m_rExport.m_pStyles->GetStyleId(nId).getStr()); + pStyleAttributeList->add(FSNS(XML_w, XML_styleId), m_rExport.m_pStyles->GetStyleId(nId)); if (bDefault) pStyleAttributeList->add(FSNS(XML_w, XML_default), "1"); if (bCustomStyle) @@ -6910,7 +6910,7 @@ void DocxAttributeOutput::SectionPageNumbering( sal_uInt16 nNumType, const ::std OString aCustomFormat; OString aFormat(lcl_ConvertNumberingType(nNumType, nullptr, aCustomFormat)); if (!aFormat.isEmpty() && aCustomFormat.isEmpty()) - pAttr->add( FSNS( XML_w, XML_fmt ), aFormat.getStr() ); + pAttr->add(FSNS(XML_w, XML_fmt), aFormat); m_pSerializer->singleElementNS( XML_w, XML_pgNumType, pAttr ); @@ -6976,7 +6976,7 @@ void DocxAttributeOutput::FontCharset( sal_uInt8 nCharSet, rtl_TextEncoding nEnc OString aCharSet( OString::number( nCharSet, 16 ) ); if ( aCharSet.getLength() == 1 ) aCharSet = "0" + aCharSet; - pAttr->add( FSNS( XML_w, XML_val ), aCharSet.getStr()); + pAttr->add(FSNS(XML_w, XML_val), aCharSet); if( GetExport().GetFilter().getVersion( ) != oox::core::ECMA_DIALECT ) { @@ -9097,14 +9097,14 @@ void DocxAttributeOutput::FormatBackground( const SvxBrushItem& rBrush ) if( !m_pBackgroundAttrList.is() ) { m_pBackgroundAttrList = FastSerializerHelper::createAttrList(); - m_pBackgroundAttrList->add( FSNS( XML_w, XML_fill ), sColor.getStr() ); + m_pBackgroundAttrList->add(FSNS(XML_w, XML_fill), sColor); m_pBackgroundAttrList->add( FSNS( XML_w, XML_val ), "clear" ); } else if ( sOriginalFill != sColor ) { // fill was modified during edition, theme fill attribute must be dropped m_pBackgroundAttrList = FastSerializerHelper::createAttrList(); - m_pBackgroundAttrList->add( FSNS( XML_w, XML_fill ), sColor.getStr() ); + m_pBackgroundAttrList->add(FSNS(XML_w, XML_fill), sColor); m_pBackgroundAttrList->add( FSNS( XML_w, XML_val ), "clear" ); } m_sOriginalBackgroundColor.clear(); @@ -9419,7 +9419,7 @@ void DocxAttributeOutput::FormatTextGrid( const SwTextGridItem& rGrid ) sGridType = OString( "linesAndChars" ); break; } - pGridAttrList->add( FSNS( XML_w, XML_type ), sGridType.getStr( ) ); + pGridAttrList->add(FSNS(XML_w, XML_type), sGridType); sal_uInt16 nHeight = rGrid.GetBaseHeight() + rGrid.GetRubyHeight(); pGridAttrList->add( FSNS( XML_w, XML_linePitch ), diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx index 90a0183817e4..1803ae90084a 100644 --- a/sw/source/filter/ww8/docxsdrexport.cxx +++ b/sw/source/filter/ww8/docxsdrexport.cxx @@ -979,8 +979,7 @@ void DocxSdrExport::writeDMLDrawing(const SdrObject* pSdrObject, const SwFrameFo rtl::Reference<sax_fastparser::FastAttributeList> pDocPrAttrList = sax_fastparser::FastSerializerHelper::createAttrList(); pDocPrAttrList->add(XML_id, OString::number(nAnchorId).getStr()); - pDocPrAttrList->add(XML_name, - OUStringToOString(pSdrObject->GetName(), RTL_TEXTENCODING_UTF8).getStr()); + pDocPrAttrList->add(XML_name, OUStringToOString(pSdrObject->GetName(), RTL_TEXTENCODING_UTF8)); if (!pSdrObject->GetTitle().isEmpty()) pDocPrAttrList->add(XML_title, OUStringToOString(pSdrObject->GetTitle(), RTL_TEXTENCODING_UTF8)); @@ -1356,8 +1355,8 @@ void DocxSdrExport::writeDMLTextFrame(ww8::Frame const* pParentFrame, int nAncho rtl::Reference<sax_fastparser::FastAttributeList> pDocPrAttrList = sax_fastparser::FastSerializerHelper::createAttrList(); pDocPrAttrList->add(XML_id, OString::number(nAnchorId).getStr()); - pDocPrAttrList->add( - XML_name, OUStringToOString(rFrameFormat.GetName(), RTL_TEXTENCODING_UTF8).getStr()); + pDocPrAttrList->add(XML_name, + OUStringToOString(rFrameFormat.GetName(), RTL_TEXTENCODING_UTF8)); pFS->singleElementNS(XML_wp, XML_docPr, pDocPrAttrList); pFS->startElementNS(XML_a, XML_graphic, FSNS(XML_xmlns, XML_a), diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx index af6bf27a13c9..980891ffc175 100644 --- a/xmloff/source/core/xmlimp.cxx +++ b/xmloff/source/core/xmlimp.cxx @@ -2189,7 +2189,7 @@ void SAL_CALL SvXMLLegacyToFastDocHandler::startElement( const OUString& rName, else { sal_Int32 const nAttr = NAMESPACE_TOKEN(nDefaultNamespace) | nToken; - mxFastAttributes->add(nAttr, OUStringToOString(rAttrValue, RTL_TEXTENCODING_UTF8).getStr()); + mxFastAttributes->add(nAttr, OUStringToOString(rAttrValue, RTL_TEXTENCODING_UTF8)); } continue; } @@ -2211,7 +2211,7 @@ void SAL_CALL SvXMLLegacyToFastDocHandler::startElement( const OUString& rName, else { sal_Int32 const nAttr = NAMESPACE_TOKEN(nAttrPrefix) | nToken; - mxFastAttributes->add(nAttr, OUStringToOString(rAttrValue, RTL_TEXTENCODING_UTF8).getStr()); + mxFastAttributes->add(nAttr, OUStringToOString(rAttrValue, RTL_TEXTENCODING_UTF8)); } } mrImport->startFastElement( mnElement, mxFastAttributes ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits