From c7367dc1679dbf00faf8672271f2b45958c58e54 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 12 Mar 2022 19:29:04 +0100 Subject: [PATCH] Sketcher: Coverity 350637 - unhandled exception in noexcept destructor --- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 34 +++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 2629dcbe1c..ce02a4772a 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -167,26 +167,36 @@ void ViewProviderSketch::ParameterObserver::updateRecalculateInitialSolutionWhil void ViewProviderSketch::ParameterObserver::subscribeToParameters() { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General"); - hGrp->Attach(this); + try { + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General"); + hGrp->Attach(this); - ParameterGrp::handle hGrp2 = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); - hGrp2->Attach(this); + ParameterGrp::handle hGrp2 = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); + hGrp2->Attach(this); - ParameterGrp::handle hGrpv = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); - hGrpv->Attach(this); + ParameterGrp::handle hGrpv = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); + hGrpv->Attach(this); + } + catch(const Base::ValueError & e) { // ensure that if parameter strings are not well-formed, the exception is not propagated + Base::Console().Error("ViewProviderSketch: Malformed parameter string: %s\n", e.what()); + } } void ViewProviderSketch::ParameterObserver::unsubscribeToParameters() { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General"); - hGrp->Detach(this); + try { + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General"); + hGrp->Detach(this); - ParameterGrp::handle hGrp2 = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); - hGrp2->Detach(this); + ParameterGrp::handle hGrp2 = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); + hGrp2->Detach(this); - ParameterGrp::handle hGrpv = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); - hGrpv->Detach(this); + ParameterGrp::handle hGrpv = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); + hGrpv->Detach(this); + } + catch(const Base::ValueError & e) { // ensure that if parameter strings are not well-formed, the exception is not propagated + Base::Console().Error("ViewProviderSketch: Malformed parameter string: %s\n", e.what()); + } } void ViewProviderSketch::ParameterObserver::initParameters()