#6437 Fix Signal crash and improve signal code

* The crash fix is ensuring we don't loop through m_disconnectCallbacks
  in DeleteSignal::send()
* This is because the callback will end up calling disconnect
  which in turn erases the entry from m_disconnectCallbacks,
  invalidating the iterators used in the loop.
This commit is contained in:
Gaute Lindkvist
2020-09-04 13:57:51 +02:00
parent baaa18bdd5
commit d08444ec77
4 changed files with 109 additions and 17 deletions

View File

@@ -119,6 +119,8 @@ void PdmObjectHandle::objectsWithReferringPtrFields( std::vector<PdmObjectHandle
//--------------------------------------------------------------------------------------------------
void PdmObjectHandle::prepareForDelete()
{
this->sendDeleteSignal();
m_parentField = nullptr;
for ( size_t i = 0; i < m_capabilities.size(); ++i )