From f4fd0d6b71ccb8fe429eb60d42fe499df7802cf4 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 20 May 2017 16:08:22 +0200 Subject: [PATCH] Generator script modified to first report and then ask for the python representation, so as keep track of the reported status --- .../templateClassPyExport.py | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Tools/generateTemplates/templateClassPyExport.py b/src/Tools/generateTemplates/templateClassPyExport.py index cf5474df27..0c48fd3b15 100644 --- a/src/Tools/generateTemplates/templateClassPyExport.py +++ b/src/Tools/generateTemplates/templateClassPyExport.py @@ -535,12 +535,13 @@ PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject } catch(Base::Exception& e) // catch the FreeCAD exceptions { - PyObject *edict = e.getPyObject(); - e.ReportException(); + + PyObject *edict = e.getPyObject(); + PyErr_SetObject(Base::BaseExceptionFreeCADError, edict); Py_DECREF(edict); - + return NULL; } catch(const boost::filesystem::filesystem_error& e) // catch boost filesystem exception @@ -725,9 +726,10 @@ PyObject *@self.export.Name@::_getattr(char *attr) // __getattr__ function: n #ifndef DONT_CATCH_CXX_EXCEPTIONS catch(Base::Exception& e) // catch the FreeCAD exceptions { + e.ReportException(); + PyObject *edict = e.getPyObject(); - e.ReportException(); PyErr_SetObject(Base::BaseExceptionFreeCADError, edict); Py_DECREF(edict); return NULL; @@ -755,9 +757,10 @@ PyObject *@self.export.Name@::_getattr(char *attr) // __getattr__ function: n #else // DONT_CATCH_CXX_EXCEPTIONS catch(Base::Exception& e) // catch the FreeCAD exceptions { + e.ReportException(); + PyObject *edict = e.getPyObject(); - e.ReportException(); PyErr_SetObject(Base::BaseExceptionFreeCADError, edict); Py_DECREF(edict); @@ -797,9 +800,9 @@ int @self.export.Name@::_setattr(char *attr, PyObject *value) // __setattr__ fun #ifndef DONT_CATCH_CXX_EXCEPTIONS catch(Base::Exception& e) // catch the FreeCAD exceptions { + e.ReportException(); PyObject *edict = e.getPyObject(); - e.ReportException(); PyErr_SetObject(Base::BaseExceptionFreeCADError, edict); Py_DECREF(edict); @@ -828,9 +831,10 @@ int @self.export.Name@::_setattr(char *attr, PyObject *value) // __setattr__ fun #else // DONT_CATCH_CXX_EXCEPTIONS catch(Base::Exception& e) // catch the FreeCAD exceptions { - PyObject *edict = e.getPyObject(); - e.ReportException(); + + PyObject *edict = e.getPyObject(); + PyErr_SetObject(Base::BaseExceptionFreeCADError, edict); Py_DECREF(edict); return -1;