From 57d17c090802a93aeffc3e85730a950edfd6f448 Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Thu, 19 Aug 2010 16:34:52 -0300 Subject: Fix mem leak in shiboken tests. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewer: Luciano Wolf Renato Araújo --- tests/samplebinding/typesystem_sample.xml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'tests') diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml index f23320ccf..ec5f150dc 100644 --- a/tests/samplebinding/typesystem_sample.xml +++ b/tests/samplebinding/typesystem_sample.xml @@ -744,6 +744,19 @@ + + // simple class to avoid mem leak inside conversion rule used in arrayMethod + template<typename T> + struct ArrayDeleter { + ArrayDeleter(T* ptr) : m_ptr(ptr) {} + ~ArrayDeleter() { delete[] m_ptr; } + operator T*() { return m_ptr; } + private: + T* m_ptr; + ArrayDeleter(const ArrayDeleter&); + ArrayDeleter& operator=(ArrayDeleter&); + }; + @@ -757,17 +770,15 @@ int numItems = PySequence_Size(%PYARG_1); - int *%out = new int[numItems]; //memory leak - for (int i=0; i < numItems; i++) { + ArrayDeleter<int> %out(new int[numItems]); + for (int i=0; i < numItems; i++) %out[i] = %CONVERTTOCPP[int](PySequence_GetItem(%PYARG_1, i)); - } PyObject *%out = PyList_New(count); - for (int i=0; i < count; i++) { + for (int i=0; i < count; i++) PyList_SET_ITEM(%out, i, %CONVERTTOPYTHON[int](%in[i])); - } -- cgit v1.2.3