Salome HOME
[EDF19803] : Free memory for reused PyScriptNode node name. PyScriptNode_ptr ref...
authorAnthony Geay <anthony.geay@edf.fr>
Mon, 8 Jul 2019 13:59:40 +0000 (15:59 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Mon, 8 Jul 2019 13:59:40 +0000 (15:59 +0200)
src/runtime/PythonNode.cxx

index ddbf5481a3fe473186944c0c7a6d5312f3685062..e80c87397b122470a1abee510bf8431d1ec54f62 100644 (file)
@@ -532,6 +532,12 @@ void PythonNode::executeRemote()
           throw;
       }
   }
+  //
+  if(!CORBA::is_nil(_pynode))
+    {
+      _pynode->UnRegister();
+    }
+  _pynode = Engines::PyScriptNode::_nil();
   DEBTRACE( "++++++++++++++ ENDOF PyNode::executeRemote: " << getName() << " ++++++++++++++++++++" );
 }
 
@@ -666,7 +672,9 @@ void PythonNode::createRemoteAdaptedPyInterpretor(Engines::Container_ptr objCont
 {
   if(!CORBA::is_nil(_pynode))
     _pynode->UnRegister();
+  objContainer->cleanAllPyScripts();
   _pynode=objContainer->createPyScriptNode(getName().c_str(),getScript().c_str());
+  _pynode->Register();
 }
 
 Engines::PyNodeBase_var PythonNode::retrieveDftRemotePyInterpretorIfAny(Engines::Container_ptr objContainer) const
@@ -685,7 +693,10 @@ void PythonNode::assignRemotePyInterpretor(Engines::PyNodeBase_var remoteInterp)
     {
       Engines::PyScriptNode_var tmpp(Engines::PyScriptNode::_narrow(remoteInterp));
       if(_pynode->_is_equivalent(tmpp))
-        return ;
+        {
+          _pynode->UnRegister();
+          return ;
+        }
     }
   if(!CORBA::is_nil(_pynode))
     _pynode->UnRegister();