Salome HOME
[bos #37406][CEA] Fixed segfault in YACS_YacsRuntimeTest on UB22,FD36 and FD37 by...
[modules/yacs.git] / src / runtime / SalomeOptimizerLoop.cxx
index ec6f2c09c00f06a49f39a2be0bc68dc0285571a3..30069d7d404d3918b29ebe39ee7be3636902ed1f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2006-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2006-2023  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -69,6 +69,7 @@ SalomeOptimizerLoop::SalomeOptimizerLoop(const SalomeOptimizerLoop& other, Compo
 
 SalomeOptimizerLoop::~SalomeOptimizerLoop()
 {
+  Py_XDECREF(_pyAlgo);
 }
 
 Node *SalomeOptimizerLoop::simpleClone(ComposedNode *father, bool editionOnly) const
@@ -147,10 +148,11 @@ void SalomeOptimizerLoop::loadAlgorithm()
               PyObject *next;
           } SwigPyObject;
 
+          PyObject * _pyAlgo = PyDict_GetItemString(globals, "algo");
+          Py_XINCREF(_pyAlgo);
           SwigPyObject* pyalgo = (SwigPyObject*)PyDict_GetItemString(globals, "swigalgo");
           _alg=(OptimizerAlgBase*)pyalgo->ptr;
           _alg->setPool(&_myPool);
-          _alg->incrRef();
         }
       PyGILState_Release(gstate);
     }