From: Anthony Geay Date: Mon, 8 Jul 2019 13:59:40 +0000 (+0200) Subject: [EDF19803] : Free memory for reused PyScriptNode node name. PyScriptNode_ptr ref... X-Git-Tag: V9_4_0a1~4 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=478b903f119749441dabf00ba72305db2a777b0b;p=modules%2Fyacs.git [EDF19803] : Free memory for reused PyScriptNode node name. PyScriptNode_ptr ref counting is set to 1 on creation instead of 2. --- diff --git a/src/runtime/PythonNode.cxx b/src/runtime/PythonNode.cxx index ddbf5481a..e80c87397 100644 --- a/src/runtime/PythonNode.cxx +++ b/src/runtime/PythonNode.cxx @@ -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();