Kaydet (Commit) 2edc8c53 authored tarafından Noel Grandin's avatar Noel Grandin

tdf#121540 crash deleting a form from form navigator

regression from
    commit eec9f6c8
    Date:   Mon Jun 4 15:01:43 2018 +0200
    loplugin:useuniqueptr in FmEntryDataList

and rename the method to make the it's operation clearer

Change-Id: Ife366f02c3d8907c397345d825ef7d1721d8930c
Reviewed-on: https://gerrit.libreoffice.org/63694
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 0acbfd46
...@@ -132,12 +132,13 @@ FmEntryDataList::~FmEntryDataList() ...@@ -132,12 +132,13 @@ FmEntryDataList::~FmEntryDataList()
} }
void FmEntryDataList::remove( FmEntryData* pItem ) void FmEntryDataList::removeNoDelete( FmEntryData* pItem )
{ {
auto it = std::find_if(maEntryDataList.begin(), maEntryDataList.end(), auto it = std::find_if(maEntryDataList.begin(), maEntryDataList.end(),
[&pItem](const std::unique_ptr<FmEntryData>& rEntryData) { return rEntryData.get() == pItem; }); [&pItem](const std::unique_ptr<FmEntryData>& rEntryData) { return rEntryData.get() == pItem; });
if (it != maEntryDataList.end()) if (it != maEntryDataList.end())
{ {
it->release();
maEntryDataList.erase( it ); maEntryDataList.erase( it );
return; return;
} }
......
...@@ -1044,9 +1044,9 @@ namespace svxform ...@@ -1044,9 +1044,9 @@ namespace svxform
// remove from parent // remove from parent
if (pCurrentParentUserData) if (pCurrentParentUserData)
pCurrentParentUserData->GetChildList()->remove( pCurrentUserData ); pCurrentParentUserData->GetChildList()->removeNoDelete( pCurrentUserData );
else else
GetNavModel()->GetRootList()->remove( pCurrentUserData ); GetNavModel()->GetRootList()->removeNoDelete( pCurrentUserData );
// remove from container // remove from container
sal_Int32 nIndex = getElementPos(xContainer, xCurrentChild); sal_Int32 nIndex = getElementPos(xContainer, xCurrentChild);
......
...@@ -415,10 +415,10 @@ namespace svxform ...@@ -415,10 +415,10 @@ namespace svxform
// remove from parent // remove from parent
if (pFolder) if (pFolder)
pFolder->GetChildList()->remove( pEntry ); pFolder->GetChildList()->removeNoDelete( pEntry );
else else
{ {
GetRootList()->remove( pEntry ); GetRootList()->removeNoDelete( pEntry );
// If root has no more form, reset CurForm at shell // If root has no more form, reset CurForm at shell
if ( !GetRootList()->size() ) if ( !GetRootList()->size() )
......
...@@ -197,7 +197,7 @@ public: ...@@ -197,7 +197,7 @@ public:
{ return maEntryDataList.at(Index).get(); } { return maEntryDataList.at(Index).get(); }
size_t size() const { return maEntryDataList.size(); } size_t size() const { return maEntryDataList.size(); }
void remove( FmEntryData* pItem ); void removeNoDelete( FmEntryData* pItem );
void insert( std::unique_ptr<FmEntryData> pItem, size_t Index ); void insert( std::unique_ptr<FmEntryData> pItem, size_t Index );
void clear(); void clear();
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment