aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeljko Ametovic <amet1977@gmail.com>2012-05-28 01:26:51 -0700
committerZeljko Ametovic <amet1977@gmail.com>2012-05-28 01:26:51 -0700
commit135b03123e1cbbfbf47b9eecdb38f4bf51b3357a (patch)
treed6a864852c55fc31d11b622c55b0975ed8f68689
parent64fd4461304ae84bd1ae17a55954ba1ce4e9f07c (diff)
parent83f467b1b15e979a1bef04d6f71526e5a8b99f6c (diff)
Merge pull request #1019 from amet/PyList_Append_memleak
[fix] PyList_Append is known to memleak
-rw-r--r--xbmc/interfaces/python/xbmcmodule/player.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/xbmc/interfaces/python/xbmcmodule/player.cpp b/xbmc/interfaces/python/xbmcmodule/player.cpp
index e71d00aae4..66f9af605d 100644
--- a/xbmc/interfaces/python/xbmcmodule/player.cpp
+++ b/xbmc/interfaces/python/xbmcmodule/player.cpp
@@ -586,8 +586,9 @@ namespace PYXBMC
{
if (g_application.m_pPlayer)
{
- PyObject *list = PyList_New(0);
- for (int iStream=0; iStream < g_application.m_pPlayer->GetAudioStreamCount(); iStream++)
+ int i_size = g_application.m_pPlayer->GetAudioStreamCount();
+ PyObject *list = PyList_New(i_size);
+ for (int iStream=0; iStream < i_size; iStream++)
{
CStdString strName;
CStdString FullLang;
@@ -595,7 +596,8 @@ namespace PYXBMC
g_LangCodeExpander.Lookup(FullLang, strName);
if (FullLang.IsEmpty())
g_application.m_pPlayer->GetAudioStreamName(iStream, FullLang);
- PyList_Append(list, Py_BuildValue((char*)"s", FullLang.c_str()));
+ PyList_SetItem(list, iStream, Py_BuildValue((char*)"s", FullLang.c_str()));
+ //PyList_SetItem() steals the ref count, so no need to DECREF
}
return list;
}
@@ -637,15 +639,17 @@ namespace PYXBMC
{
if (g_application.m_pPlayer)
{
- PyObject *list = PyList_New(0);
- for (int iStream=0; iStream < g_application.m_pPlayer->GetSubtitleCount(); iStream++)
+ int i_size = g_application.m_pPlayer->GetSubtitleCount();
+ PyObject *list = PyList_New(i_size);
+ for (int iStream=0; iStream < i_size; iStream++)
{
CStdString strName;
CStdString FullLang;
g_application.m_pPlayer->GetSubtitleName(iStream, strName);
if (!g_LangCodeExpander.Lookup(FullLang, strName))
FullLang = strName;
- PyList_Append(list, Py_BuildValue((char*)"s", FullLang.c_str()));
+ PyList_SetItem(list, iStream, Py_BuildValue((char*)"s", FullLang.c_str()));
+ //PyList_SetItem() steals the ref count, so no need to DECREF
}
return list;
}