History

ext/py-phasevoc.c: continue fixing memory leak (#49)

Paul Brossier committed 10 years ago

Commit 202697a1 parent 59cb4511 file · +26 −13Browse files

Showing the changes to python/ext (1 of 1 file). Show all

Unified · Split

python/ext/py-phasevoc.c+26−13
@@ -2,7 +2,16 @@ · 1 unmodified line
22
33 static char Py_pvoc_doc[] = "pvoc object";
44
5−AUBIO_DECLARE(pvoc, uint_t win_s; uint_t hop_s)
5+typedef struct
6+{
7+ PyObject_HEAD
8+ aubio_pvoc_t * o;
9+ uint_t win_s;
10+ uint_t hop_s;
11+ cvec_t *output;
12+ fvec_t *routput;
13+} Py_pvoc;
14+
615
716 //AUBIO_NEW(pvoc)
817 static PyObject *
@@ -46,20 +55,30 @@ Py_pvoc_new (PyTypeObject * type, PyObject * args, PyObject * kwds) · 37 unmodified lines
4655 return NULL;
4756 }
4857
58+ self->output = new_cvec(self->win_s);
59+ self->routput = new_fvec(self->hop_s);
60+
4961 return (PyObject *) self;
5062 }
5163
5264
5365 AUBIO_INIT(pvoc, self->win_s, self->hop_s)
5466
55−AUBIO_DEL(pvoc)
67+static void
68+Py_pvoc_del (Py_pvoc *self, PyObject *unused)
69+{
70+ del_aubio_pvoc(self->o);
71+ del_cvec(self->output);
72+ del_fvec(self->routput);
73+ self->ob_type->tp_free((PyObject *) self);
74+}
75+
5676
5777 static PyObject *
5878 Py_pvoc_do(Py_pvoc * self, PyObject * args)
5979 {
6080 PyObject *input;
6181 fvec_t *vec;
62− cvec_t *output;
6382
6483 if (!PyArg_ParseTuple (args, "O", &input)) {
6584 return NULL;
@@ -71,11 +90,9 @@ Py_pvoc_do(Py_pvoc * self, PyObject * args) · 5 unmodified lines
7190 return NULL;
7291 }
7392
74− output = new_cvec(self->win_s);
75−
7693 // compute the function
77− aubio_pvoc_do (self->o, vec, output);
78− return (PyObject *)PyAubio_CCvecToPyCvec(output);
94+ aubio_pvoc_do (self->o, vec, self->output);
95+ return (PyObject *)PyAubio_CCvecToPyCvec(self->output);
7996 }
8097
8198 AUBIO_MEMBERS_START(pvoc)
@@ -90,8 +107,6 @@ Py_pvoc_rdo(Py_pvoc * self, PyObject * args) · 8 unmodified lines
90107 {
91108 PyObject *input;
92109 cvec_t *vec;
93− fvec_t *output;
94−
95110 if (!PyArg_ParseTuple (args, "O", &input)) {
96111 return NULL;
97112 }
@@ -102,11 +117,9 @@ Py_pvoc_rdo(Py_pvoc * self, PyObject * args) · 4 unmodified lines
102117 return NULL;
103118 }
104119
105− output = new_fvec(self->hop_s);
106−
107120 // compute the function
108− aubio_pvoc_rdo (self->o, vec, output);
109− return (PyObject *)PyAubio_CFvecToArray(output);
121+ aubio_pvoc_rdo (self->o, vec, self->routput);
122+ return (PyObject *)PyAubio_CFvecToArray(self->routput);
110123 }
111124
112125 static PyMethodDef Py_pvoc_methods[] = {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t