diff options
| -rw-r--r-- | lib/base/nconfig.cpp | 1 | ||||
| -rw-r--r-- | lib/dvb/dvb.cpp | 6 | ||||
| -rw-r--r-- | lib/dvb/epgcache.cpp | 2 | ||||
| -rw-r--r-- | lib/gui/elistboxcontent.cpp | 17 |
4 files changed, 17 insertions, 9 deletions
diff --git a/lib/base/nconfig.cpp b/lib/base/nconfig.cpp index 31b0a36f..106558ac 100644 --- a/lib/base/nconfig.cpp +++ b/lib/base/nconfig.cpp @@ -25,6 +25,7 @@ RESULT ePythonConfigQuery::getConfigValue(const char *key, std::string &value) if (PyString_Check(pRet)) { value.assign(PyString_AS_STRING(pRet)); + Py_DECREF(pRet); return 0; } Py_DECREF(pRet); diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 7e9a39c6..eac4554d 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -1502,7 +1502,7 @@ RESULT eDVBChannel::setCIRouting(const eDVBCIRouting &routing) void eDVBChannel::SDTready(int result) { - ePyObject args = PyTuple_New(2); + ePyObject args = PyTuple_New(2), ret; bool ok=false; if (!result) { @@ -1521,7 +1521,9 @@ void eDVBChannel::SDTready(int result) Py_INCREF(Py_None); Py_INCREF(Py_None); } - PyObject_CallObject(m_tsid_onid_callback, args); + ret = PyObject_CallObject(m_tsid_onid_callback, args); + if (ret) + Py_DECREF(ret); Py_DECREF(args); Py_DECREF(m_tsid_onid_callback); m_tsid_onid_callback = ePyObject(); diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index 0bb6e25b..222cba32 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -1672,7 +1672,7 @@ int handleEvent(eServiceEvent *ptr, ePyObject dest_list, const char* argstring, { fillTuple(convertFuncArgs, argstring, argcount, service, ptr, nowTime, service_name); ePyObject result = PyObject_CallObject(convertFunc, convertFuncArgs); - if (result) + if (!result) { if (service_name) Py_DECREF(service_name); 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 |
