summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/filter/html/htmlfld.cxx61
-rw-r--r--sw/source/filter/html/swhtml.cxx1
-rw-r--r--sw/source/filter/html/swhtml.hxx2
3 files changed, 31 insertions, 33 deletions
diff --git a/sw/source/filter/html/htmlfld.cxx b/sw/source/filter/html/htmlfld.cxx
index d02e48de9082..568f36576a84 100644
--- a/sw/source/filter/html/htmlfld.cxx
+++ b/sw/source/filter/html/htmlfld.cxx
@@ -281,7 +281,7 @@ void SwHTMLParser::NewField()
nWhich = SwFieldIds::DateTime;
SwFieldType* pType = m_xDoc->getIDocumentFieldsAccess().GetSysFieldType( nWhich );
- SwField *pNewField = nullptr;
+ std::unique_ptr<SwField> xNewField;
bool bInsOnEndTag = false;
switch( nType )
@@ -297,7 +297,7 @@ void SwHTMLParser::NewField()
bInsOnEndTag = true;
}
if( pSubOption->GetEnum( nSub, aHTMLExtUsrFieldSubTable ) )
- pNewField = new SwExtUserField(static_cast<SwExtUserFieldType*>(pType), nSub, nFormat);
+ xNewField.reset(new SwExtUserField(static_cast<SwExtUserFieldType*>(pType), nSub, nFormat));
}
break;
@@ -312,7 +312,7 @@ void SwHTMLParser::NewField()
bInsOnEndTag = true;
}
- pNewField = new SwAuthorField(static_cast<SwAuthorFieldType*>(pType), nFormat);
+ xNewField.reset(new SwAuthorField(static_cast<SwAuthorFieldType*>(pType), nFormat));
}
break;
@@ -362,10 +362,10 @@ void SwHTMLParser::NewField()
nNumFormat = pFormatter->GetFormatIndex( pFormatTable[i].eFormat,
LANGUAGE_SYSTEM);
- pNewField = new SwDateTimeField(static_cast<SwDateTimeFieldType *>(pType), nSub, nNumFormat);
+ xNewField.reset(new SwDateTimeField(static_cast<SwDateTimeFieldType *>(pType), nSub, nNumFormat));
if (nSub & FIXEDFLD)
- static_cast<SwDateTimeField *>(pNewField)->SetDateTime(DateTime(Date(nDate), tools::Time(nTime)));
+ static_cast<SwDateTimeField *>(xNewField.get())->SetDateTime(DateTime(Date(nDate), tools::Time(nTime)));
}
break;
@@ -393,9 +393,9 @@ void SwHTMLParser::NewField()
if( bHasNumValue )
nSub |= FIXEDFLD;
- pNewField = new SwDateTimeField(static_cast<SwDateTimeFieldType *>(pType), nSub, nNumFormat);
+ xNewField.reset(new SwDateTimeField(static_cast<SwDateTimeFieldType *>(pType), nSub, nNumFormat));
if (bHasNumValue)
- static_cast<SwDateTimeField *>(pNewField)->SetValue(dValue);
+ static_cast<SwDateTimeField*>(xNewField.get())->SetValue(dValue);
}
}
break;
@@ -423,9 +423,9 @@ void SwHTMLParser::NewField()
nSub==PG_RANDOM )
nFormat = SVX_NUM_PAGEDESC;
- pNewField = new SwPageNumberField(static_cast<SwPageNumberFieldType*>(pType), nSub, nFormat, nOff);
+ xNewField.reset(new SwPageNumberField(static_cast<SwPageNumberFieldType*>(pType), nSub, nFormat, nOff));
if (nFormat == SVX_NUM_CHAR_SPECIAL)
- static_cast<SwPageNumberField *>(pNewField)->SetUserString(aValue);
+ static_cast<SwPageNumberField*>(xNewField.get())->SetUserString(aValue);
}
}
break;
@@ -473,9 +473,9 @@ void SwHTMLParser::NewField()
bInsOnEndTag = true;
}
- pNewField = new SwDocInfoField(static_cast<SwDocInfoFieldType *>(pType), nSub, aName, nNumFormat);
+ xNewField.reset(new SwDocInfoField(static_cast<SwDocInfoFieldType *>(pType), nSub, aName, nNumFormat));
if (bHasNumValue)
- static_cast<SwDocInfoField*>(pNewField)->SetValue(dValue);
+ static_cast<SwDocInfoField*>(xNewField.get())->SetValue(dValue);
}
}
break;
@@ -489,7 +489,7 @@ void SwHTMLParser::NewField()
SvxNumType nFormat = SVX_NUM_ARABIC;
if( pFormatOption )
pFormatOption->GetEnum( nFormat, aHTMLPageNumFieldFormatTable );
- pNewField = new SwDocStatField(static_cast<SwDocStatFieldType*>(pType), nSub, nFormat);
+ xNewField.reset(new SwDocStatField(static_cast<SwDocStatFieldType*>(pType), nSub, nFormat));
m_bUpdateDocStat |= (DS_PAGE != nSub);
}
}
@@ -506,23 +506,23 @@ void SwHTMLParser::NewField()
bInsOnEndTag = true;
}
- pNewField = new SwFileNameField(static_cast<SwFileNameFieldType*>(pType), nFormat);
+ xNewField.reset(new SwFileNameField(static_cast<SwFileNameFieldType*>(pType), nFormat));
}
break;
default:
;
}
- if (pNewField)
+ if (xNewField)
{
if (bInsOnEndTag)
{
- m_pField = pNewField;
+ m_xField = std::move(xNewField);
}
else
{
- m_xDoc->getIDocumentContentOperations().InsertPoolItem(*m_pPam, SwFormatField(*pNewField));
- delete pNewField;
+ m_xDoc->getIDocumentContentOperations().InsertPoolItem(*m_pPam, SwFormatField(*xNewField));
+ xNewField.reset();
}
m_bInField = true;
}
@@ -530,39 +530,38 @@ void SwHTMLParser::NewField()
void SwHTMLParser::EndField()
{
- if( m_pField )
+ if (m_xField)
{
- switch( m_pField->Which() )
+ switch (m_xField->Which())
{
case SwFieldIds::DocInfo:
- OSL_ENSURE( static_cast<SwDocInfoField*>(m_pField)->IsFixed(),
+ OSL_ENSURE( static_cast<SwDocInfoField*>(m_xField.get())->IsFixed(),
"Field DocInfo should not have been saved" );
- static_cast<SwDocInfoField*>(m_pField)->SetExpansion( m_aContents );
+ static_cast<SwDocInfoField*>(m_xField.get())->SetExpansion( m_aContents );
break;
case SwFieldIds::ExtUser:
- OSL_ENSURE( static_cast<SwExtUserField*>(m_pField)->IsFixed(),
+ OSL_ENSURE( static_cast<SwExtUserField*>(m_xField.get())->IsFixed(),
"Field ExtUser should not have been saved" );
- static_cast<SwExtUserField*>(m_pField)->SetExpansion( m_aContents );
+ static_cast<SwExtUserField*>(m_xField.get())->SetExpansion( m_aContents );
break;
case SwFieldIds::Author:
- OSL_ENSURE( static_cast<SwAuthorField*>(m_pField)->IsFixed(),
+ OSL_ENSURE( static_cast<SwAuthorField*>(m_xField.get())->IsFixed(),
"Field Author should not have been saved" );
- static_cast<SwAuthorField*>(m_pField)->SetExpansion( m_aContents );
+ static_cast<SwAuthorField*>(m_xField.get())->SetExpansion( m_aContents );
break;
case SwFieldIds::Filename:
- OSL_ENSURE( static_cast<SwFileNameField*>(m_pField)->IsFixed(),
+ OSL_ENSURE( static_cast<SwFileNameField*>(m_xField.get())->IsFixed(),
"Field FileName should not have been saved" );
- static_cast<SwFileNameField*>(m_pField)->SetExpansion( m_aContents );
+ static_cast<SwFileNameField*>(m_xField.get())->SetExpansion( m_aContents );
break;
default: break;
}
- m_xDoc->getIDocumentContentOperations().InsertPoolItem( *m_pPam, SwFormatField(*m_pField) );
- delete m_pField;
- m_pField = nullptr;
+ m_xDoc->getIDocumentContentOperations().InsertPoolItem( *m_pPam, SwFormatField(*m_xField) );
+ m_xField.reset();
}
m_bInField = false;
@@ -571,7 +570,7 @@ void SwHTMLParser::EndField()
void SwHTMLParser::InsertFieldText()
{
- if( m_pField )
+ if (m_xField)
{
// append the current text part to the text
m_aContents += aToken;
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
index 4586686e1693..fa5b976506a4 100644
--- a/sw/source/filter/html/swhtml.cxx
+++ b/sw/source/filter/html/swhtml.cxx
@@ -264,7 +264,6 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn,
m_pSttNdIdx( nullptr ),
m_pFormImpl( nullptr ),
m_pMarquee( nullptr ),
- m_pField( nullptr ),
m_pImageMap( nullptr ),
m_pImageMaps(nullptr),
m_pFootEndNoteImpl( nullptr ),
diff --git a/sw/source/filter/html/swhtml.hxx b/sw/source/filter/html/swhtml.hxx
index 585b42e07c03..82fdb4994faf 100644
--- a/sw/source/filter/html/swhtml.hxx
+++ b/sw/source/filter/html/swhtml.hxx
@@ -425,7 +425,7 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
std::shared_ptr<HTMLTable> m_xTable; // current "outermost" table
SwHTMLForm_Impl *m_pFormImpl; // current form
SdrObject *m_pMarquee; // current marquee
- SwField *m_pField; // current field
+ std::unique_ptr<SwField> m_xField; // current field
ImageMap *m_pImageMap; // current image map
ImageMaps *m_pImageMaps; ///< all Image-Maps that have been read
SwHTMLFootEndNote_Impl *m_pFootEndNoteImpl;