]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Issue 0020536: EDF 1136 GUI: SIGSEGV for Python module if import process of GUI compo... V4_1_0_maintainance_FINAL
authorvsr <vsr@opencascade.com>
Mon, 19 Oct 2009 08:10:58 +0000 (08:10 +0000)
committervsr <vsr@opencascade.com>
Mon, 19 Oct 2009 08:10:58 +0000 (08:10 +0000)
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.cxx
src/SALOME_PYQT/SALOME_PYQT_GUI/SALOME_PYQT_Module.h

index 35c178b9740170417b3eca37640f7806a4f55b2e..d3aa08926fcaa15837a3fe1a6595ce3dc5fc3272 100644 (file)
@@ -195,6 +195,10 @@ SALOME_PYQT_Module::~SALOME_PYQT_Module()
 {
   if ( myXmlHandler )
     delete myXmlHandler;
+  if ( myInterp && myModule ) {
+    PyLockWrapper aLock = myInterp->GetLockWrapper();
+    Py_XDECREF(myModule);
+  }
 }
 
 /*!
@@ -834,13 +838,17 @@ void SALOME_PYQT_Module::activate( SUIT_Study* theStudy )
 
   // initialize Python subinterpreter (on per study) and put it in <myInterp> variable
   initInterp( aStudyId );
-  if ( !myInterp )
+  if ( !myInterp ) {
+    myLastActivateStatus = false;
     return; // Error
+  }
 
   // import Python GUI module
   importModule();
-  if ( !myModule )
+  if ( !myModule ) {
+    myLastActivateStatus = false;
     return; // Error
+  }
 
   // get python lock
   PyLockWrapper aLock = myInterp->GetLockWrapper();
index beeb04b7b9bfea3a643898e2625470c93fedada9..b51ec51d758119d708e3955d9b38bb4f1a40e240 100644 (file)
@@ -54,7 +54,7 @@ private:
   /* current Python subinterpreter */
   SALOME_PYQT_PyInterp*            myInterp;
   /* Python GUI module loaded */
-  PyObjWrapper                     myModule;
+  PyObject*                        myModule;
   /* Python GUI being initialized (not zero only during the initialization)*/
   static SALOME_PYQT_Module*       myInitModule;