fix garbage collection (Modules/gcmodule.c:380: move_unreachable: Assertion
[enigma2.git] / lib / python / connections.cpp
index fd3e2a4bc498517cd33797ae681547f1af8d4db5..864e55240081c6c083520d7efd2249bf67497c06 100644 (file)
@@ -2,13 +2,11 @@
 
 PSignal::PSignal()
 {
-       m_list = PyList_New(0);
-       Py_INCREF(m_list);
 }
 
 PSignal::~PSignal()
 {
-       Py_DECREF(m_list);
+       Py_XDECREF(m_list);
 }
 
 void PSignal::callPython(ePyObject tuple)
@@ -22,8 +20,12 @@ void PSignal::callPython(ePyObject tuple)
        }
 }
 
-PyObject *PSignal::get()
+PyObject *PSignal::get(bool steal)
 {
-       Py_INCREF(m_list);
+       if (!steal) {
+               if (!m_list)
+                       m_list = PyList_New(0);
+               Py_INCREF(m_list);
+       }
        return m_list;
 }