From 9381c1b7f9323a6ca688b8d4d4a4ec5760d95bc8 Mon Sep 17 00:00:00 2001 From: azv Date: Wed, 23 Dec 2015 16:10:53 +0300 Subject: [PATCH] Fix undo of arc creation (issue #1166) --- .../SolveSpaceSolver/SolveSpaceSolver_Storage.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Storage.cpp b/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Storage.cpp index 23c4995e6..e5e79492b 100644 --- a/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Storage.cpp +++ b/src/SketchSolver/SolveSpaceSolver/SolveSpaceSolver_Storage.cpp @@ -1530,15 +1530,20 @@ bool SolveSpaceSolver_Storage::removeCoincidence(ConstraintWrapperPtr theConstra std::map::iterator aFIt = myFeatureMap.begin(); for (; aFIt != myFeatureMap.end(); ++aFIt) { for (aNotCIt = aNotCoinc.begin(); aNotCIt != aNotCoinc.end(); ++aNotCIt) { - if (!aFIt->second->isUsed(aNotCIt->first->baseAttribute())) + if (!aNotCIt->second || !aFIt->second->isUsed(aNotCIt->first->baseAttribute())) continue; std::list aSubs = aFIt->second->subEntities(); std::list::iterator aSIt = aSubs.begin(); + bool isUpd = false; for (; aSIt != aSubs.end(); ++aSIt) - if (*aSIt == aNotCIt->first) + if (*aSIt == aNotCIt->first) { *aSIt = aNotCIt->second; - aFIt->second->setSubEntities(aSubs); - anUpdFeatures.insert(aFIt->second); + isUpd = true; + } + if (isUpd) { + aFIt->second->setSubEntities(aSubs); + anUpdFeatures.insert(aFIt->second); + } } } // update features -- 2.30.2