History

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

Paul Brossier committed 10 years ago

Commit 59cb4511 parent a28dab61 file · +31 −8Browse files

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

Unified · Split

python/ext/py-filterbank.c+31−8
@@ -2,7 +2,14 @@ · 1 unmodified line
22
33 static char Py_filterbank_doc[] = "filterbank object";
44
5−AUBIO_DECLARE(filterbank, uint_t n_filters; uint_t win_s)
5+typedef struct
6+{
7+ PyObject_HEAD
8+ aubio_filterbank_t * o;
9+ uint_t n_filters;
10+ uint_t win_s;
11+ fvec_t *out;
12+} Py_filterbank;
613
714 //AUBIO_NEW(filterbank)
815 static PyObject *
@@ -44,17 +51,35 @@ Py_filterbank_new (PyTypeObject * type, PyObject * args, PyObject * kwds) · 35 unmodified lines
4451 return (PyObject *) self;
4552 }
4653
54+static int
55+Py_filterbank_init (Py_filterbank * self, PyObject * args, PyObject * kwds)
56+{
57+ self->o = new_aubio_filterbank (self->n_filters, self->win_s);
58+ if (self->o == NULL) {
59+ char_t errstr[30];
60+ sprintf(errstr, "error creating filterbank with n_filters=%d, win_s=%d",
61+ self->n_filters, self->win_s);
62+ PyErr_SetString (PyExc_StandardError, errstr);
63+ return -1;
64+ }
65+ self->out = new_fvec(self->n_filters);
4766
48−AUBIO_INIT(filterbank, self->n_filters, self->win_s)
67+ return 0;
68+}
4969
50−AUBIO_DEL(filterbank)
70+static void
71+Py_filterbank_del (Py_filterbank *self, PyObject *unused)
72+{
73+ del_aubio_filterbank(self->o);
74+ del_fvec(self->out);
75+ self->ob_type->tp_free((PyObject *) self);
76+}
5177
5278 static PyObject *
5379 Py_filterbank_do(Py_filterbank * self, PyObject * args)
5480 {
5581 PyObject *input;
5682 cvec_t *vec;
57− fvec_t *out;
5883
5984 if (!PyArg_ParseTuple (args, "O", &input)) {
6085 return NULL;
@@ -66,11 +91,9 @@ Py_filterbank_do(Py_filterbank * self, PyObject * args) · 5 unmodified lines
6691 return NULL;
6792 }
6893
69− out = new_fvec (self->n_filters);
70−
7194 // compute the function
72− aubio_filterbank_do (self->o, vec, out);
73− return (PyObject *)PyAubio_CFvecToArray(out);
95+ aubio_filterbank_do (self->o, vec, self->out);
96+ return (PyObject *)PyAubio_CFvecToArray(self->out);
7497 }
7598
7699 AUBIO_MEMBERS_START(filterbank)

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