TechDraw: Fix some Coverity Unchecked dynamic_cast

CIDs from sasobadovinac-FreeCAD:
151684
151714
151715
151716
151718
151719
151720
151721
151722
151724
151725
151730
151749
151759
151771
151794
This commit is contained in:
Ian Rees
2016-08-15 23:05:07 +12:00
parent 66bd0f6b90
commit 34583fad05
7 changed files with 72 additions and 84 deletions

View File

@@ -1012,10 +1012,16 @@ bool _isValidVertexes(Gui::Command* cmd) {
//! verify that the Selection contains valid geometries for an Edge to Edge Dimension
int _isValidEdgeToEdge(Gui::Command* cmd) {
//TODO: can the edges be in 2 different features??
int edgeType = isInvalid;
std::vector<Gui::SelectionObject> selection = cmd->getSelection().getSelectionEx();
TechDraw::DrawViewPart* objFeat0 = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
//TechDraw::DrawViewPart* objFeat1 = dynamic_cast<TechDraw::DrawViewPart *>(selection[1].getObject());
auto objFeat0( dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject()) );
// getObject() can return null pointer, or dynamic_cast can fail
if ( !objFeat0 ) {
Base::Console().Error("Logic error in _isValidEdgeToEdge()\n");
return isInvalid;
}
int edgeType = isInvalid;
const std::vector<std::string> SubNames = selection[0].getSubNames();
if(SubNames.size() == 2) { //there are 2
if (TechDraw::DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge" && //they both start with "Edge"