Salome HOME
PAL12755: EDF: SALOME frozen with Load Script and a Python Module. Additional fix.
authorjfa <jfa@opencascade.com>
Tue, 15 Aug 2006 09:52:22 +0000 (09:52 +0000)
committerjfa <jfa@opencascade.com>
Tue, 15 Aug 2006 09:52:22 +0000 (09:52 +0000)
src/SMESHGUI/SMESHGUI_Swig.i

index fe3925989c97f920c19856810022884a2262f7ab..0ba7ee7e452a28c884f21df92b7489982d629e02 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 //
 //
 //
 
 /* Exception handler for all functions */
 %exception {
 
 /* Exception handler for all functions */
 %exception {
-    Py_BEGIN_ALLOW_THREADS
+  class PyAllowThreadsGuard {
+   public:
+    // Py_BEGIN_ALLOW_THREADS
+    PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+    // Py_END_ALLOW_THREADS
+    ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+   private:
+    PyThreadState *_save;
+  };
+
+  PyAllowThreadsGuard guard;
+
+  try {
     $action
     $action
-    Py_END_ALLOW_THREADS
+  }
+  catch(...) {
+    PyErr_SetString(PyExc_RuntimeError,"Unknown exception caught");
+    return NULL;
+  }
 }
 
 %include "typemaps.i"
 }
 
 %include "typemaps.i"