From 033e4d900ba9eab73906efd4c1bb8b41ca119172 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 14 Sep 2020 18:34:25 +0200 Subject: [PATCH] Base: [skip ci] Coverity: Uncaught exception --- src/Base/Exception.cpp | 35 +++++++++++-------- src/Gui/Command.cpp | 3 +- .../Gui/TaskTransformedParameters.cpp | 28 ++++++++++++--- 3 files changed, 46 insertions(+), 20 deletions(-) diff --git a/src/Base/Exception.cpp b/src/Base/Exception.cpp index 4d2a009e11..7b108a79cd 100644 --- a/src/Base/Exception.cpp +++ b/src/Base/Exception.cpp @@ -125,27 +125,32 @@ PyObject * Exception::getPyObject(void) void Exception::setPyObject( PyObject * pydict) { - if (pydict && Py::_Dict_Check(pydict)) { - Py::Dict edict(pydict); - if (edict.hasKey("sfile")) - _file = static_cast(Py::String(edict.getItem("sfile"))); + try { + if (pydict && Py::_Dict_Check(pydict)) { + Py::Dict edict(pydict); + if (edict.hasKey("sfile")) + _file = static_cast(Py::String(edict.getItem("sfile"))); - if (edict.hasKey("sfunction")) - _function = static_cast(Py::String(edict.getItem("sfunction"))); + if (edict.hasKey("sfunction")) + _function = static_cast(Py::String(edict.getItem("sfunction"))); - if (edict.hasKey("sErrMsg")) - _sErrMsg = static_cast(Py::String(edict.getItem("sErrMsg"))); + if (edict.hasKey("sErrMsg")) + _sErrMsg = static_cast(Py::String(edict.getItem("sErrMsg"))); - if (edict.hasKey("iline")) + if (edict.hasKey("iline")) #if PY_MAJOR_VERSION >= 3 - _line = static_cast(Py::Long(edict.getItem("iline"))); + _line = static_cast(Py::Long(edict.getItem("iline"))); #else - _line = static_cast(Py::Int(edict.getItem("iline"))); + _line = static_cast(Py::Int(edict.getItem("iline"))); #endif - if (edict.hasKey("btranslatable")) - _isTranslatable = static_cast(Py::Boolean(edict.getItem("btranslatable"))); - if (edict.hasKey("breported")) - _isReported = static_cast(Py::Boolean(edict.getItem("breported"))); + if (edict.hasKey("btranslatable")) + _isTranslatable = static_cast(Py::Boolean(edict.getItem("btranslatable"))); + if (edict.hasKey("breported")) + _isReported = static_cast(Py::Boolean(edict.getItem("breported"))); + } + } + catch (Py::Exception& e) { + e.clear(); // should never happen } } diff --git a/src/Gui/Command.cpp b/src/Gui/Command.cpp index be9d346b28..24efce7665 100644 --- a/src/Gui/Command.cpp +++ b/src/Gui/Command.cpp @@ -690,7 +690,8 @@ void Command::_runCommand(const char *file, int line, DoCmd_Type eType, const ch try { Base::Interpreter().runString(sCmd); - }catch(Py::Exception &) { + } + catch(Py::Exception &) { Base::PyException::ThrowException(); } } diff --git a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp index f84b5a0075..7c43fe671d 100644 --- a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp @@ -362,22 +362,42 @@ App::DocumentObject* TaskTransformedParameters::getSketchObject() const { void TaskTransformedParameters::hideObject() { - FCMD_OBJ_HIDE(getTopTransformedObject()); + try { + FCMD_OBJ_HIDE(getTopTransformedObject()); + } + catch (const Base::Exception& e) { + e.ReportException(); + } } void TaskTransformedParameters::showObject() { - FCMD_OBJ_SHOW(getTopTransformedObject()); + try { + FCMD_OBJ_SHOW(getTopTransformedObject()); + } + catch (const Base::Exception& e) { + e.ReportException(); + } } void TaskTransformedParameters::hideBase() { - FCMD_OBJ_HIDE(getBaseObject()); + try { + FCMD_OBJ_HIDE(getBaseObject()); + } + catch (const Base::Exception& e) { + e.ReportException(); + } } void TaskTransformedParameters::showBase() { - FCMD_OBJ_SHOW(getBaseObject()); + try { + FCMD_OBJ_SHOW(getBaseObject()); + } + catch (const Base::Exception& e) { + e.ReportException(); + } } void TaskTransformedParameters::exitSelectionMode()