TD: Fix several coverity issues:

* CID 316569: Uninitialized scalar variable
* CID 350651: Unchecked dynamic_cast
* CID 350565: Unchecked dynamic_cast
* CID 350595: Unchecked dynamic_cast
* CID 350638: Unchecked dynamic_cast
* CID 350547: Division or modulo by float zero
This commit is contained in:
wmayer
2022-03-13 15:40:49 +01:00
parent f6f21f4fa6
commit 68171bd20c
4 changed files with 28 additions and 21 deletions

View File

@@ -182,6 +182,7 @@ BaseGeom::BaseGeom() :
{
occEdge = TopoDS_Edge();
cosmeticTag = std::string();
tag = boost::uuids::nil_uuid();
}
BaseGeomPtr BaseGeom::copy()

View File

@@ -105,7 +105,7 @@ void execInsertPrefixChar(Gui::Command* cmd, std::string prefixChar) {
for (auto selected : selection) {
auto object = selected.getObject();
if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) {
auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selected.getObject());
auto dim = static_cast<TechDraw::DrawViewDimension*>(selected.getObject());
std::string formatSpec = dim->FormatSpec.getStrValue();
formatSpec = prefixChar + formatSpec;
dim->FormatSpec.setValue(formatSpec);
@@ -190,7 +190,7 @@ void execRemovePrefixChar(Gui::Command* cmd) {
{
auto object = selected.getObject();
if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) {
auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selected.getObject());
auto dim = static_cast<TechDraw::DrawViewDimension*>(selected.getObject());
std::string formatSpec = dim->FormatSpec.getStrValue();
int pos = formatSpec.find("%.");
if (pos != 0)
@@ -360,7 +360,7 @@ void execIncreaseDecreaseDecimal(Gui::Command* cmd, int delta) {
for (auto selected : selection) {
auto object = selected.getObject();
if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) {
auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selected.getObject());
auto dim = static_cast<TechDraw::DrawViewDimension*>(selected.getObject());
std::string formatSpec = dim->FormatSpec.getStrValue();
std::string searchStr("%.");
int numFound = formatSpec.find(searchStr) + 2;
@@ -2343,7 +2343,7 @@ namespace TechDrawGui {
for (auto selected : selection) {
auto object = selected.getObject();
if (object->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) {
auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selected.getObject());
auto dim = static_cast<TechDraw::DrawViewDimension*>(selected.getObject());
std::string dimType = dim->Type.getValueAsString();
if (dimType == needDimType)
validDimension.push_back(dim);

View File

@@ -1403,7 +1403,6 @@ void CmdTechDrawExtensionLockUnlockView::activated(int iMsg) {
return;
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Lock/Unlock View"));
if (objFeat->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) {
auto objFeat = dynamic_cast<TechDraw::DrawViewPart*>(selection[0].getObject());
bool lockPosition = objFeat->LockPosition.getValue();
lockPosition = !lockPosition;
objFeat->LockPosition.setValue(lockPosition);
@@ -1819,8 +1818,11 @@ void CmdTechDrawExtensionAreaAnnotation::activated(int iMsg)
QString qUserString = asQuantity.getUserString();
std::string sUserString = Base::Tools::toStdString(qUserString);
xCenter = (xCenter/totalPoints)/scale;
yCenter = (yCenter/totalPoints)/scale;
if (totalPoints != 0 && scale != 0.0) {
xCenter = (xCenter/totalPoints)/scale;
yCenter = (yCenter/totalPoints)/scale;
}
// set the attributes in the data tab's fields
balloon->SourceView.setValue(objFeat);
balloon->BubbleShape.setValue("Rectangle");
@@ -1871,17 +1873,20 @@ namespace TechDrawGui {
std::string _createBalloon(Gui::Command* cmd, TechDraw::DrawViewPart* objFeat)
// create a new balloon, return it's name as string
{
std::string featName;
TechDraw::DrawPage* page = objFeat->findParentPage();
page->balloonParent = objFeat;
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(page->getDocument());
ViewProviderPage* pageVP = dynamic_cast<ViewProviderPage*>(guiDoc->getViewProvider(page));
QGVPage* viewPage = pageVP->getGraphicsView();
std::string featName = viewPage->getDrawPage()->getDocument()->getUniqueObjectName("Balloon");
std::string pageName = viewPage->getDrawPage()->getNameInDocument();
cmd->doCommand(cmd->Doc, "App.activeDocument().addObject('TechDraw::DrawViewBalloon','%s')",
featName.c_str());
cmd->doCommand(cmd->Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)",
pageName.c_str(), featName.c_str());
if (pageVP) {
QGVPage* viewPage = pageVP->getGraphicsView();
featName = viewPage->getDrawPage()->getDocument()->getUniqueObjectName("Balloon");
std::string pageName = viewPage->getDrawPage()->getNameInDocument();
cmd->doCommand(cmd->Doc, "App.activeDocument().addObject('TechDraw::DrawViewBalloon','%s')",
featName.c_str());
cmd->doCommand(cmd->Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)",
pageName.c_str(), featName.c_str());
}
return featName;
}

View File

@@ -108,17 +108,15 @@ void TaskCustomizeFormat::changeEvent(QEvent *e)
void TaskCustomizeFormat::setUiEdit()
{
setWindowTitle(tr("Customize Format"));
if (selectedObject->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId()))
if (auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selectedObject))
{
auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selectedObject);
isDimension = true;
std::string dimText = dim->FormatSpec.getStrValue();
dimRawValue = dim->getDimValue();
ui->leFormat->setText(Base::Tools::fromStdString(dimText));
}
else
else if (auto balloon = dynamic_cast<TechDraw::DrawViewBalloon*>(selectedObject))
{
auto balloon = dynamic_cast<TechDraw::DrawViewBalloon*>(selectedObject);
isDimension = false;
std::string balloonText = balloon->Text.getStrValue();
ui->leFormat->setText(Base::Tools::fromStdString(balloonText));
@@ -191,9 +189,12 @@ void TaskCustomizeFormat::onSymbolClicked()
{
// Slot: a symbol PushButton has been clicked
QObject* senderObj(this->sender());
QPushButton* pressedButton = dynamic_cast<QPushButton*>(senderObj);
QString pbText = pressedButton->text();
ui->leFormat->insert(pbText);
QPushButton* pressedButton = qobject_cast<QPushButton*>(senderObj);
if (pressedButton)
{
QString pbText = pressedButton->text();
ui->leFormat->insert(pbText);
}
}
void TaskCustomizeFormat::onFormatChanged()