From 884a32fabf9467dd7680f3821fa4dacd3fedeca4 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Sat, 10 Sep 2016 07:57:43 -0400 Subject: [PATCH] Coverty changes: ** CID 152490: Control flow issues (DEADCODE) ** CID 152492: Null pointer dereferences (FORWARD_NULL) ** CID 152493: Null pointer dereferences (FORWARD_NULL) ** CID 152494: Null pointer dereferences (FORWARD_NULL) ** CID 152495: Null pointer dereferences (FORWARD_NULL) ** CID 152496: Null pointer dereferences (FORWARD_NULL) ** CID 152497: Null pointer dereferences (FORWARD_NULL) ** CID 152502: Null pointer dereferences (REVERSE_INULL) ** CID 152507: Uninitialized members (UNINIT_CTOR) ** CID 152508: Uninitialized members (UNINIT_CTOR) ** CID 152508: Uninitialized members (UNINIT_CTOR) ** CID 152510: Uninitialized members (UNINIT_CTOR) --- src/Mod/TechDraw/App/DrawPage.cpp | 2 +- src/Mod/TechDraw/App/DrawViewCollection.cpp | 12 ++++-- src/Mod/TechDraw/App/GeometryObject.cpp | 2 +- src/Mod/TechDraw/Gui/Command.cpp | 21 +++++++--- src/Mod/TechDraw/Gui/CommandCreateDims.cpp | 46 +++++++++++++++------ src/Mod/TechDraw/Gui/QGIArrow.cpp | 3 +- src/Mod/TechDraw/Gui/QGISectionLine.cpp | 1 + src/Mod/TechDraw/Gui/QGIViewDimension.cpp | 3 +- src/Mod/TechDraw/Gui/QGIViewPart.cpp | 2 +- 9 files changed, 66 insertions(+), 26 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawPage.cpp b/src/Mod/TechDraw/App/DrawPage.cpp index e43d4580b..4a3b55580 100644 --- a/src/Mod/TechDraw/App/DrawPage.cpp +++ b/src/Mod/TechDraw/App/DrawPage.cpp @@ -238,7 +238,7 @@ int DrawPage::addView(App::DocumentObject *docObj) return -1; //position all new views in center of Page (exceptDVDimension) - DrawView* view = dynamic_cast(docObj); + DrawView* view = static_cast(docObj); if (!docObj->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { view->X.setValue(getPageWidth()/2.0); view->Y.setValue(getPageHeight()/2.0); diff --git a/src/Mod/TechDraw/App/DrawViewCollection.cpp b/src/Mod/TechDraw/App/DrawViewCollection.cpp index e43c62205..8a788a22f 100644 --- a/src/Mod/TechDraw/App/DrawViewCollection.cpp +++ b/src/Mod/TechDraw/App/DrawViewCollection.cpp @@ -87,9 +87,9 @@ int DrawViewCollection::countChildren() const std::vector &views = Views.getValues(); for(std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { - App::DocumentObject *docObj = dynamic_cast(*it); + App::DocumentObject *docObj = static_cast(*it); if(docObj->getTypeId().isDerivedFrom(TechDraw::DrawViewCollection::getClassTypeId())) { - TechDraw::DrawViewCollection *viewCollection = dynamic_cast(*it); + TechDraw::DrawViewCollection *viewCollection = static_cast(*it); numChildren += viewCollection->countChildren() + 1; } else { numChildren += 1; @@ -127,7 +127,7 @@ App::DocumentObjectExecReturn *DrawViewCollection::execute(void) for(std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { App::DocumentObject *docObj = *it; if(docObj->getTypeId().isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - TechDraw::DrawView *view = dynamic_cast(*it); + TechDraw::DrawView *view = static_cast(*it); // Set scale factor of each view view->ScaleType.setValue("Document"); @@ -140,7 +140,7 @@ App::DocumentObjectExecReturn *DrawViewCollection::execute(void) for(std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { App::DocumentObject *docObj = *it; if(docObj->getTypeId().isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - TechDraw::DrawView *view = dynamic_cast(*it); + TechDraw::DrawView *view = static_cast(*it); view->ScaleType.setValue("Custom"); // Set scale factor of each view @@ -159,6 +159,10 @@ QRectF DrawViewCollection::getRect() const QRectF result; for (auto& v:Views.getValues()) { TechDraw::DrawView *view = dynamic_cast(v); + if (!view) { + throw Base::Exception("DrawViewCollection::getRect bad View\n"); + } + result = result.united(view->getRect().translated(view->X.getValue(),view->Y.getValue())); } return QRectF(0,0,Scale.getValue() * result.width(),Scale.getValue() * result.height()); diff --git a/src/Mod/TechDraw/App/GeometryObject.cpp b/src/Mod/TechDraw/App/GeometryObject.cpp index 02cebb5a9..fcf0e7ab5 100644 --- a/src/Mod/TechDraw/App/GeometryObject.cpp +++ b/src/Mod/TechDraw/App/GeometryObject.cpp @@ -274,7 +274,7 @@ void GeometryObject::addGeomFromCompound(TopoDS_Shape edgeCompound, edgeClass ca } if (circle) { if ((*itVertex)->isEqual(c1,Precision::Confusion())) { - c1Add = true; + c1Add = false; } } diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index 29fee1c6d..a4b0d1cf0 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -103,14 +104,14 @@ TechDraw::DrawPage* _findPage(Gui::Command* cmd) QObject::tr("Can not determine correct page.")); return page; } else { //use only page in document - page = dynamic_cast(selPages.front()); + page = static_cast(selPages.front()); } } else if (selPages.size() > 1) { //multiple pages in selection QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Too many pages"), QObject::tr("Select exactly 1 page.")); return page; } else { //use only page in selection - page = dynamic_cast(selPages.front()); + page = static_cast(selPages.front()); } return page; @@ -172,6 +173,10 @@ void CmdTechDrawNewPageDef::activated(int iMsg) commitCommand(); TechDraw::DrawPage* fp = dynamic_cast(getDocument()->getObject(PageName.c_str())); + if (!fp) { + throw Base::Exception("CmdTechDrawNewPageDef fp not found\n"); + } + Gui::ViewProvider* vp = Gui::Application::Instance->getDocument(getDocument())->getViewProvider(fp); TechDrawGui::ViewProviderPage* dvp = dynamic_cast(vp); if (dvp) { @@ -247,6 +252,9 @@ void CmdTechDrawNewPage::activated(int iMsg) commitCommand(); TechDraw::DrawPage* fp = dynamic_cast(getDocument()->getObject(PageName.c_str())); + if (!fp) { + throw Base::Exception("CmdTechDrawNewPagePick fp not found\n"); + } Gui::ViewProvider* vp = Gui::Application::Instance->getDocument(getDocument())->getViewProvider(fp); TechDrawGui::ViewProviderPage* dvp = dynamic_cast(vp); if (dvp) { @@ -377,7 +385,7 @@ void CmdTechDrawNewViewSection::activated(int iMsg) return; } App::DocumentObject* dObj = *(shapes.begin()); - TechDraw::DrawViewPart* dvp = dynamic_cast(dObj); + TechDraw::DrawViewPart* dvp = static_cast(dObj); if (dvp->getSectionRef()) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("This View already has a related Section. Choose another.")); @@ -397,6 +405,9 @@ void CmdTechDrawNewViewSection::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.addView(App.activeDocument().%s)",PageName.c_str(),FeatName.c_str()); App::DocumentObject *docObj = getDocument()->getObject(FeatName.c_str()); TechDraw::DrawViewSection* dsv = dynamic_cast(docObj); + if (!dsv) { + throw Base::Exception("CmdTechDrawNewViewSection DSV not found\n"); + } Gui::Control().showDialog(new TaskDlgSectionView(dvp,dsv)); updateActive(); @@ -592,9 +603,9 @@ void CmdTechDrawClipPlus::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewClip::getClassTypeId())) { - clip = dynamic_cast((*itSel).getObject()); + clip = static_cast((*itSel).getObject()); } else if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - view = dynamic_cast((*itSel).getObject()); + view = static_cast((*itSel).getObject()); } } if (!view) { diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 806042870..9f7757037 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -33,6 +33,7 @@ #include # include +# include # include # include # include @@ -94,14 +95,14 @@ TechDraw::DrawPage* _findPageCCD(Gui::Command* cmd) QObject::tr("Can not determine correct page.")); return page; } else { //use only page in document - page = dynamic_cast(selPages.front()); + page = static_cast(selPages.front()); } } else if (selPages.size() > 1) { //multiple pages in selection QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Too many pages"), QObject::tr("Select exactly 1 page.")); return page; } else { //use only page in selection - page = dynamic_cast(selPages.front()); + page = static_cast(selPages.front()); } } return page; @@ -161,7 +162,7 @@ void CmdTechDrawNewDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -242,6 +243,9 @@ void CmdTechDrawNewDimension::activated(int iMsg) ,contentStr.c_str()); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -293,7 +297,7 @@ void CmdTechDrawNewRadiusDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -325,6 +329,9 @@ void CmdTechDrawNewRadiusDimension::activated(int iMsg) doCommand(Doc, "App.activeDocument().%s.FormatSpec = 'R%%value%%'", FeatName.c_str()); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewRadiusDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -377,7 +384,7 @@ void CmdTechDrawNewDiameterDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -411,6 +418,9 @@ void CmdTechDrawNewDiameterDimension::activated(int iMsg) doCommand(Doc, "App.activeDocument().%s.FormatSpec = '\xe2\x8c\x80%%value%%'", FeatName.c_str()); // utf-8 encoded diameter symbol dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewDiameterDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -463,7 +473,7 @@ void CmdTechDrawNewLengthDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -513,6 +523,9 @@ void CmdTechDrawNewLengthDimension::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Type = '%s'", FeatName.c_str() , "Distance"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewLengthDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc, "App.activeDocument().%s.FormatSpec = '%%value%%'", FeatName.c_str()); @@ -567,7 +580,7 @@ void CmdTechDrawNewDistanceXDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -615,6 +628,9 @@ void CmdTechDrawNewDistanceXDimension::activated(int iMsg) ,"DistanceX"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewDistanceXDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc, "App.activeDocument().%s.FormatSpec = '%%value%%'", FeatName.c_str()); @@ -669,7 +685,7 @@ void CmdTechDrawNewDistanceYDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -716,6 +732,9 @@ void CmdTechDrawNewDistanceYDimension::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"DistanceY"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewDistanceYDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc, "App.activeDocument().%s.FormatSpec = '%%value%%'", FeatName.c_str()); @@ -770,7 +789,7 @@ void CmdTechDrawNewAngleDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - objFeat = dynamic_cast ((*itSel).getObject()); + objFeat = static_cast ((*itSel).getObject()); SubNames = (*itSel).getSubNames(); } } @@ -801,6 +820,9 @@ void CmdTechDrawNewAngleDimension::activated(int iMsg) ,"Angle"); dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); + if (!dim) { + throw Base::Exception("CmdTechDrawNewAngleDimension - dim not found\n"); + } dim->References2D.setValues(objs, subs); doCommand(Doc,"App.activeDocument().%s.MeasureType = 'Projected'",FeatName.c_str()); @@ -858,7 +880,7 @@ void CmdTechDrawLinkDimension::activated(int iMsg) std::vector::iterator itSel = selection.begin(); for (; itSel != selection.end(); itSel++) { if ((*itSel).getObject()->isDerivedFrom(Part::Feature::getClassTypeId())) { - obj3D = dynamic_cast ((*itSel).getObject()); + obj3D = static_cast ((*itSel).getObject()); subs = (*itSel).getSubNames(); } } @@ -1072,8 +1094,8 @@ int _isValidEdgeToEdge(Gui::Command* cmd) { bool _isValidVertexToEdge(Gui::Command* cmd) { bool result = false; std::vector selection = cmd->getSelection().getSelectionEx(); - TechDraw::DrawViewPart* objFeat0 = dynamic_cast(selection[0].getObject()); - //TechDraw::DrawViewPart* objFeat1 = dynamic_cast(selection[1].getObject()); + TechDraw::DrawViewPart* objFeat0 = static_cast(selection[0].getObject()); + //TechDraw::DrawViewPart* objFeat1 = static_castt(selection[1].getObject()); const std::vector SubNames = selection[0].getSubNames(); if(SubNames.size() == 2) { //there are 2 int eId,vId; diff --git a/src/Mod/TechDraw/Gui/QGIArrow.cpp b/src/Mod/TechDraw/Gui/QGIArrow.cpp index b2335cb28..e73258c9f 100644 --- a/src/Mod/TechDraw/Gui/QGIArrow.cpp +++ b/src/Mod/TechDraw/Gui/QGIArrow.cpp @@ -39,7 +39,8 @@ using namespace TechDrawGui; QGIArrow::QGIArrow() : m_fill(Qt::SolidPattern), - m_size(5.0) + m_size(5.0), + m_style(0) { isFlipped = false; m_brush.setStyle(m_fill); diff --git a/src/Mod/TechDraw/Gui/QGISectionLine.cpp b/src/Mod/TechDraw/Gui/QGISectionLine.cpp index 6f8820239..b3022f0c1 100644 --- a/src/Mod/TechDraw/Gui/QGISectionLine.cpp +++ b/src/Mod/TechDraw/Gui/QGISectionLine.cpp @@ -41,6 +41,7 @@ using namespace TechDrawGui; QGISectionLine::QGISectionLine() { m_extLen = 8.0; + m_arrowSize = 0.0; m_line = new QGraphicsPathItem(); addToGroup(m_line); diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index b0a06f1f8..c894fb2ea 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -138,7 +138,8 @@ void QGIDatumLabel::mouseReleaseEvent( QGraphicsSceneMouseEvent * event) } QGIViewDimension::QGIViewDimension() : - hasHover(false) + hasHover(false), + m_lineWidth(0.0) { setHandlesChildEvents(false); setFlag(QGraphicsItem::ItemIsMovable, false); diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 6a5adc7ad..54aa8268a 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -455,7 +455,7 @@ void QGIViewPart::drawSectionLine(bool b) { //Base::Console().Message("TRACE - QGIVP::drawSectionLine); - TechDraw::DrawViewPart *viewPart = dynamic_cast(getViewObject()); + TechDraw::DrawViewPart *viewPart = static_cast(getViewObject()); TechDraw::DrawViewSection *viewSection = viewPart->getSectionRef(); if (!viewPart || !viewSection) {