diff options
author | Zeljko Ametovic <amet1977@gmail.com> | 2012-05-28 01:26:51 -0700 |
---|---|---|
committer | Zeljko Ametovic <amet1977@gmail.com> | 2012-05-28 01:26:51 -0700 |
commit | 135b03123e1cbbfbf47b9eecdb38f4bf51b3357a (patch) | |
tree | d6a864852c55fc31d11b622c55b0975ed8f68689 | |
parent | 64fd4461304ae84bd1ae17a55954ba1ce4e9f07c (diff) | |
parent | 83f467b1b15e979a1bef04d6f71526e5a8b99f6c (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.cpp | 16 |
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; } |