sw/source/filter/ww8/docxattributeoutput.cxx | 14 ++------------ sw/source/filter/ww8/docxattributeoutput.hxx | 4 ++-- 2 files changed, 4 insertions(+), 14 deletions(-)
New commits: commit bdff04c635f9b65485f6a5a79116699cb1e82d72 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri Apr 3 09:08:33 2015 +0200 DOCX export: use std::shared_ptr<> in FieldInfos::pField Change-Id: I8165adcad90e98cd166e27586f4948deb24b22c9 diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 3fbd96d..793f85c 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -1031,8 +1031,6 @@ void DocxAttributeOutput::EndRun() // Unknown fields should be removed too if ( !pIt->bClose || ( pIt->eType == ww::eUNKNOWN ) ) { - if (pIt->pField) - delete pIt->pField; pIt = m_Fields.erase( pIt ); continue; } @@ -1071,8 +1069,6 @@ void DocxAttributeOutput::EndRun() // If fields begin before hyperlink then // it should end before hyperlink close EndField_Impl( m_Fields.back( ) ); - if (m_Fields.back().pField) - delete m_Fields.back().pField; m_Fields.pop_back(); } m_pSerializer->endElementNS( XML_w, XML_hyperlink ); @@ -1093,8 +1089,6 @@ void DocxAttributeOutput::EndRun() // Remove the field if no end needs to be written if ( !pIt->bClose ) { - if (pIt->pField) - delete pIt->pField; pIt = m_Fields.erase( pIt ); continue; } @@ -1225,8 +1219,6 @@ void DocxAttributeOutput::EndRun() // If fields begin after hyperlink start then // it should end before hyperlink close EndField_Impl( m_Fields.back( ) ); - if (m_Fields.back().pField) - delete m_Fields.back().pField; m_Fields.pop_back(); } @@ -1241,8 +1233,6 @@ void DocxAttributeOutput::EndRun() while ( m_Fields.begin() != m_Fields.end() ) { EndField_Impl( m_Fields.front( ) ); - if (m_Fields.front().pField) - delete m_Fields.front().pField; m_Fields.erase( m_Fields.begin( ) ); } } @@ -1405,7 +1395,7 @@ void DocxAttributeOutput::StartField_Impl( FieldInfos& rInfos, bool bWriteRun ) WriteFFData( rInfos ); if ( rInfos.pField ) { - const SwDropDownField& rFld2 = *static_cast<const SwDropDownField*>(rInfos.pField); + const SwDropDownField& rFld2 = *static_cast<const SwDropDownField*>(rInfos.pField.get()); uno::Sequence<OUString> aItems = rFld2.GetItemSequence(); GetExport().DoComboBox(rFld2.GetName(), @@ -6552,7 +6542,7 @@ void DocxAttributeOutput::WriteField_Impl( const SwField* pFld, ww::eField eType { struct FieldInfos infos; if (pFld) - infos.pField = pFld->CopyField(); + infos.pField.reset(pFld->CopyField()); infos.sCmd = rFldCmd; infos.eType = eType; infos.bClose = WRITEFIELD_CLOSE & nMode; diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 15ff8b6..c63efd3 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -52,13 +52,13 @@ namespace oox { namespace drawingml { class DrawingML; } } struct FieldInfos { - const SwField* pField; + std::shared_ptr<const SwField> pField; const ::sw::mark::IFieldmark* pFieldmark; ww::eField eType; bool bOpen; bool bClose; OUString sCmd; - FieldInfos() : pField(NULL), pFieldmark(NULL), eType(ww::eUNKNOWN), bOpen(false), bClose(false){} + FieldInfos() : pFieldmark(NULL), eType(ww::eUNKNOWN), bOpen(false), bClose(false){} }; enum DocxColBreakStatus _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits