diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2008-11-25 00:34:29 +0100 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2008-11-25 00:34:29 +0100 |
| commit | 371e23c22dcec461ee3fbc8c989859cd08717b3d (patch) | |
| tree | 1b0a2c4c343be884ee6aea064574b577859b1150 /lib/gui | |
| parent | afc5eb78a27a7c41fffd81eadf7ac650cb6f2043 (diff) | |
| download | enigma2-371e23c22dcec461ee3fbc8c989859cd08717b3d.tar.gz enigma2-371e23c22dcec461ee3fbc8c989859cd08717b3d.zip | |
fix some refcounting bugs
Diffstat (limited to 'lib/gui')
| -rw-r--r-- | lib/gui/elistboxcontent.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index beb12044..69f72a41 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -467,7 +467,8 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style, /* type is borrowed */ } else eWarning("eListboxPythonConfigContent: second value of tuple is not a tuple."); - /* value is borrowed */ + if (value) + Py_DECREF(value); } if (selected && (!local_style || !local_style->m_selection)) @@ -622,7 +623,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c painter.clip(itemregion); clearRegion(painter, style, local_style, ePyObject(), ePyObject(), ePyObject(), ePyObject(), selected, itemregion, sel_clip); - ePyObject items; + ePyObject items, buildfunc_ret; if (m_list && cursorValid()) { @@ -638,7 +639,7 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c if (PyCallable_Check(m_buildFunc)) // when we have a buildFunc then call it { if (PyTuple_Check(items)) - items = PyObject_CallObject(m_buildFunc, items); + buildfunc_ret = items = PyObject_CallObject(m_buildFunc, items); else eDebug("items is no tuple"); } @@ -983,8 +984,8 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c style.drawFrame(painter, eRect(offset, m_itemsize), eWindowStyle::frameListboxEntry); error_out: - if (m_buildFunc && PyCallable_Check(m_buildFunc) && items) - Py_DECREF(items); + if (buildfunc_ret) + Py_DECREF(buildfunc_ret); painter.clippop(); } @@ -1015,7 +1016,11 @@ int eListboxPythonMultiContent::currentCursorSelectable() { ePyObject ret = PyObject_CallObject(m_selectableFunc, args); if (ret) - return ret == Py_True; + { + bool retval = ret == Py_True; + Py_DECREF(ret); + return ret; + } eDebug("call m_selectableFunc failed!!! assume not callable"); } else |
