From 6886621008ed153cd0dfeffe239ed218f0fd34e2 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sun, 29 Dec 2019 22:42:13 -0500 Subject: [PATCH] [TD]fix potential nullptr while restoring --- src/Mod/TechDraw/App/DrawViewDimension.cpp | 10 +++++++++- src/Mod/TechDraw/Gui/QGIViewBalloon.cpp | 3 +++ src/Mod/TechDraw/Gui/QGIViewDimension.cpp | 3 +++ src/Mod/TechDraw/Gui/QGIViewPart.cpp | 3 +++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index d8b6f26776..2c5d14cd74 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -219,6 +219,11 @@ App::DocumentObjectExecReturn *DrawViewDimension::execute(void) // Base::Console().Message("DVD::execute() - %s\n", getNameInDocument()); if (!keepUpdated()) { return App::DocumentObject::StdReturn; + } + DrawViewPart* dvp = getViewPart(); + if (dvp == nullptr) { + Base::Console().Message("DVD::execute - no DVP!\n"); + return App::DocumentObject::StdReturn; } //any empty Reference2D?? @@ -716,8 +721,11 @@ double DrawViewDimension::getDimValue() } return result; } + if (getViewPart() == nullptr) { + return result; + } - if (!getViewPart()->hasGeometry()) { //happens when loading saved document + if (!getViewPart()->hasGeometry() ) { //happens when loading saved document return result; } diff --git a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index 43e190f2c2..552f648faf 100644 --- a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp @@ -501,6 +501,9 @@ void QGIViewBalloon::draw_modifier(bool modifier) show(); const TechDraw::DrawViewPart *refObj = balloon->getViewPart(); + if (refObj == nullptr) { + return; + } if(!refObj->hasGeometry()) { //nothing to draw yet (restoring) balloonLabel->hide(); hide(); diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index 56ab3a1a0d..8927c21141 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -675,6 +675,9 @@ void QGIViewDimension::draw() } const TechDraw::DrawViewPart *refObj = dim->getViewPart(); + if (refObj == nullptr) { + return; + } if(!refObj->hasGeometry()) { //nothing to draw yet (restoring) datumLabel->hide(); hide(); diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 7ff8728f90..b3b04254c9 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -830,6 +830,9 @@ void QGIViewPart::drawSectionLine(TechDraw::DrawViewSection* viewSection, bool b if (!viewPart) { return; } + if (viewSection == nullptr) { + return; + } if (!viewSection->hasGeometry()) { return;