From 1444b64803ccccf4aa35ab1237ee9f0de5267329 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 17 Jan 2019 18:33:06 +0100 Subject: [PATCH] fix possible crash in PropertySheet when removing dependencies --- src/Mod/Spreadsheet/App/PropertySheet.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Mod/Spreadsheet/App/PropertySheet.cpp b/src/Mod/Spreadsheet/App/PropertySheet.cpp index 4a9d5c9ae0..8ed557f445 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.cpp +++ b/src/Mod/Spreadsheet/App/PropertySheet.cpp @@ -102,7 +102,9 @@ void PropertySheet::clear() mergedCells.clear(); propertyNameToCellMap.clear(); + cellToPropertyNameMap.clear(); documentObjectToCellMap.clear(); + cellToDocumentObjectMap.clear(); docDeps.clear(); aliasProp.clear(); revAliasProp.clear(); @@ -1023,9 +1025,9 @@ void PropertySheet::removeDependencies(CellAddress key) while (j != i1->second.end()) { std::map >::iterator k = propertyNameToCellMap.find(*j); - assert(k != propertyNameToCellMap.end()); - - k->second.erase(key); + //assert(k != propertyNameToCellMap.end()); + if (k != propertyNameToCellMap.end()) + k->second.erase(key); ++j; } @@ -1042,12 +1044,13 @@ void PropertySheet::removeDependencies(CellAddress key) while (j != i2->second.end()) { std::map >::iterator k = documentObjectToCellMap.find(*j); - assert(k != documentObjectToCellMap.end()); + //assert(k != documentObjectToCellMap.end()); + if (k != documentObjectToCellMap.end()) { + k->second.erase(key); - k->second.erase(key); - - if (k->second.size() == 0) - documentObjectToCellMap.erase(*j); + if (k->second.size() == 0) + documentObjectToCellMap.erase(*j); + } ++j; }