From 478b903f119749441dabf00ba72305db2a777b0b Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Mon, 8 Jul 2019 15:59:40 +0200 Subject: [PATCH] [EDF19803] : Free memory for reused PyScriptNode node name. PyScriptNode_ptr ref counting is set to 1 on creation instead of 2. --- src/runtime/PythonNode.cxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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(); -- 2.39.2