diff options
-rw-r--r-- | filter/source/graphicfilter/icgm/chart.cxx | 28 | ||||
-rw-r--r-- | filter/source/graphicfilter/icgm/chart.hxx | 5 | ||||
-rw-r--r-- | filter/source/graphicfilter/icgm/class7.cxx | 4 |
3 files changed, 9 insertions, 28 deletions
diff --git a/filter/source/graphicfilter/icgm/chart.cxx b/filter/source/graphicfilter/icgm/chart.cxx index eaefef22195e..afd39f69e556 100644 --- a/filter/source/graphicfilter/icgm/chart.cxx +++ b/filter/source/graphicfilter/icgm/chart.cxx @@ -33,34 +33,16 @@ CGMChart::CGMChart() CGMChart::~CGMChart() { // delete the whole textentry structure - - while( !maTextEntryList.empty() ) - { - DeleteTextEntry( maTextEntryList[ 0 ] ); - } -} - -void CGMChart::DeleteTextEntry( TextEntry* pTextEntry ) -{ - if ( pTextEntry ) + for (auto & pTextEntry : maTextEntryList) { - delete pTextEntry->pText; - ::std::vector< TextEntry* >::iterator it; - for ( it = maTextEntryList.begin(); it != maTextEntryList.end(); ++it ) - { - if ( *it == pTextEntry ) - { - maTextEntryList.erase( it ); - break; - } - } - delete pTextEntry; + if ( pTextEntry ) + delete pTextEntry->pText; } } -void CGMChart::InsertTextEntry( TextEntry* pTextEntry ) +void CGMChart::InsertTextEntry( std::unique_ptr<TextEntry> pTextEntry ) { - maTextEntryList.push_back( pTextEntry ); + maTextEntryList.push_back( std::move(pTextEntry) ); } void CGMChart::ResetAnnotation() diff --git a/filter/source/graphicfilter/icgm/chart.hxx b/filter/source/graphicfilter/icgm/chart.hxx index 445d558978d3..837015614696 100644 --- a/filter/source/graphicfilter/icgm/chart.hxx +++ b/filter/source/graphicfilter/icgm/chart.hxx @@ -64,15 +64,14 @@ class CGMChart final friend class CGMImpressOutAct; sal_Int8 mnCurrentFileType; - ::std::vector< TextEntry* > maTextEntryList; + ::std::vector< std::unique_ptr<TextEntry> > maTextEntryList; DataNode mDataNode[ 7 ]; public: CGMChart(); ~CGMChart(); - void DeleteTextEntry( TextEntry* ); - void InsertTextEntry( TextEntry* ); + void InsertTextEntry( std::unique_ptr<TextEntry> ); void ResetAnnotation(); bool IsAnnotation(); diff --git a/filter/source/graphicfilter/icgm/class7.cxx b/filter/source/graphicfilter/icgm/class7.cxx index 54cebd4bdf2b..c85e5284e026 100644 --- a/filter/source/graphicfilter/icgm/class7.cxx +++ b/filter/source/graphicfilter/icgm/class7.cxx @@ -117,7 +117,7 @@ void CGM::ImplDoClass7() if (mpEndValidSource - pAppData < 9) throw css::uno::Exception("attempt to read past end of input", nullptr); - TextEntry* pTextEntry = new TextEntry; + std::unique_ptr<TextEntry> pTextEntry(new TextEntry); pTextEntry->nTypeOfText = *reinterpret_cast<sal_uInt16*>( pAppData ); pTextEntry->nRowOrLineNum = *reinterpret_cast<sal_uInt16*>( pAppData + 2 ); pTextEntry->nColumnNum = *reinterpret_cast<sal_uInt16*>( pAppData + 4 ); @@ -132,7 +132,7 @@ void CGM::ImplDoClass7() memcpy( pTextEntry->pText, pAppData, nLen ); pAppData += nLen; - mpChart->InsertTextEntry( pTextEntry ); + mpChart->InsertTextEntry( std::move(pTextEntry) ); } break; case 0x321 : /*AppData - IOC_TABS */break; |