diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index 2edd655d94..d67bda66fc 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -411,12 +411,15 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested if (preSelPnt != -1) sketchgui->getSketchObject()->getGeoVertexIndex(preSelPnt, GeoId, PosId); else if (preSelCrv != -1){ - GeoId = preSelCrv; - const Part::Geometry *geom = sketchgui->getSketchObject()->getGeometry(GeoId); + const Part::Geometry *geom = sketchgui->getSketchObject()->getGeometry(preSelCrv); - if(geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()){ - const Part::GeomLineSegment *line = static_cast(geom); - hitShapeDir= line->getEndPoint()-line->getStartPoint(); + // ensure geom exists in case object was called before preselection is updated + if (geom) { + GeoId = preSelCrv; + if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { + const Part::GeomLineSegment *line = static_cast(geom); + hitShapeDir= line->getEndPoint()-line->getStartPoint(); + } } } diff --git a/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp index 6c145101b0..5dae35b766 100644 --- a/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp @@ -303,7 +303,9 @@ void EditModeGeometryCoinManager::updateGeometryColor(const GeoListFacade & geol } else if (preselectpoint != -1) { preselectpointmfid = coinMapping.getIndexLayer(preselectpoint); - if (l == preselectpointmfid.layerId && preselectpointmfid.fieldIndex < PtNum) + if (MultiFieldId::Invalid != preselectpointmfid && + preselectpointmfid.layerId == l && + preselectpointmfid.fieldIndex < PtNum) pcolor[preselectpointmfid.fieldIndex] = drawingParameters.PreselectColor; }