Coverity: Unchecked dynamic_cast

This commit is contained in:
wmayer
2020-07-20 12:37:08 +02:00
parent 2453a50aba
commit a9202f931b
6 changed files with 14 additions and 5 deletions

View File

@@ -362,6 +362,9 @@ void CosmeticEdgePy::setCenter(Py::Object arg)
pNew = DrawUtil::invertY(pNew);
auto oldGeom = getCosmeticEdgePtr()->m_geometry;
TechDraw::Circle* oldCircle = dynamic_cast<TechDraw::Circle*>(oldGeom);
if (oldCircle == nullptr) {
throw Py::TypeError("Edge geometry is not a circle");
}
getCosmeticEdgePtr()->permaStart = pNew;
getCosmeticEdgePtr()->permaEnd = pNew;

View File

@@ -235,11 +235,11 @@ DrawPage* DrawView::findParentPage() const
std::vector<App::DocumentObject*> parent = getInList();
for (std::vector<App::DocumentObject*>::iterator it = parent.begin(); it != parent.end(); ++it) {
if ((*it)->getTypeId().isDerivedFrom(DrawPage::getClassTypeId())) {
page = dynamic_cast<TechDraw::DrawPage *>(*it);
page = static_cast<TechDraw::DrawPage *>(*it);
}
if ((*it)->getTypeId().isDerivedFrom(DrawViewCollection::getClassTypeId())) {
collection = dynamic_cast<TechDraw::DrawViewCollection *>(*it);
collection = static_cast<TechDraw::DrawViewCollection *>(*it);
page = collection->findParentPage();
}

View File

@@ -177,7 +177,7 @@ std::vector<TopoDS_Shape> ShapeExtractor::getXShapes(const App::Link* xLink)
// }
Base::Placement childPlm;
if (l->getTypeId().isDerivedFrom(App::LinkElement::getClassTypeId())) {
App::LinkElement* cLinkElem = dynamic_cast<App::LinkElement*>(l);
App::LinkElement* cLinkElem = static_cast<App::LinkElement*>(l);
if (cLinkElem->hasPlacement()) {
childPlm = cLinkElem->getLinkPlacementProperty()->getValue();
}

View File

@@ -293,6 +293,9 @@ void QGILeaderLine::startPathEdit(void)
{
saveState();
auto featLeader( dynamic_cast<TechDraw::DrawLeaderLine*>(getViewObject()) );
if (featLeader == nullptr) {
return;
}
double scale = featLeader->getScale();
m_editPath->setScale(scale);

View File

@@ -463,6 +463,9 @@ void QGIViewBalloon::balloonLabelDragged(bool ctrl)
// Base::Console().Message("QGIVB::bLabelDragged(%d)\n", ctrl);
m_ctrl = ctrl;
auto dvb( dynamic_cast<TechDraw::DrawViewBalloon *>(getViewObject()) );
if (dvb == nullptr)
return;
if (!m_dragInProgress) { //first drag movement
m_dragInProgress = true;
if (ctrl) { //moving whole thing, remember Origin offset from Bubble

View File

@@ -685,7 +685,7 @@ bool QGIViewPart::formatGeomFromCosmetic(std::string cTag, QGIEdge* item)
// Base::Console().Message("QGIVP::formatGeomFromCosmetic(%s)\n", cTag.c_str());
bool result = true;
auto partFeat( dynamic_cast<TechDraw::DrawViewPart *>(getViewObject()) );
TechDraw::CosmeticEdge* ce = partFeat->getCosmeticEdge(cTag);
TechDraw::CosmeticEdge* ce = partFeat ? partFeat->getCosmeticEdge(cTag) : nullptr;
if (ce != nullptr) {
item->setNormalColor(ce->m_format.m_color.asValue<QColor>());
item->setWidth(ce->m_format.m_weight * lineScaleFactor);
@@ -701,7 +701,7 @@ bool QGIViewPart::formatGeomFromCenterLine(std::string cTag, QGIEdge* item)
// Base::Console().Message("QGIVP::formatGeomFromCenterLine(%d)\n",sourceIndex);
bool result = true;
auto partFeat( dynamic_cast<TechDraw::DrawViewPart *>(getViewObject()) );
TechDraw::CenterLine* cl = partFeat->getCenterLine(cTag);
TechDraw::CenterLine* cl = partFeat ? partFeat->getCenterLine(cTag) : nullptr;
if (cl != nullptr) {
item->setNormalColor(cl->m_format.m_color.asValue<QColor>());
item->setWidth(cl->m_format.m_weight * lineScaleFactor);