Salome HOME
[bos #37406][CEA] Fixed segfault in YACS_YacsRuntimeTest on UB22,FD36 and FD37 by...
[modules/yacs.git] / src / runtime / SalomeOptimizerLoop.cxx
index 6e034e8901b683cb1121772e2b643980129ebb67..30069d7d404d3918b29ebe39ee7be3636902ed1f 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2006-2012  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
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -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);
     }