[Libreoffice-commits] core.git: sw/source
Miklos Vajna
vmiklos at collabora.co.uk
Fri Apr 3 00:09:24 PDT 2015
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 <vmiklos at 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
More information about the Libreoffice-commits
mailing list