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
2 2
3static char Py_filterbank_doc[] = "filterbank object";3static char Py_filterbank_doc[] = "filterbank object";
4 4
5AUBIO_DECLARE(filterbank, uint_t n_filters; uint_t win_s)5typedef 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;
6 13
7//AUBIO_NEW(filterbank)14//AUBIO_NEW(filterbank)
8static PyObject *15static PyObject *
@@ -44,17 +51,35 @@ Py_filterbank_new (PyTypeObject * type, PyObject * args, PyObject * kwds) · 35 unmodified lines
44 return (PyObject *) self;51 return (PyObject *) self;
45}52}
46 53
54static int
55Py_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);
47 66
48AUBIO_INIT(filterbank, self->n_filters, self->win_s)67 return 0;
68}
49 69
50AUBIO_DEL(filterbank)70static void
71Py_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}
51 77
52static PyObject *78static PyObject *
53Py_filterbank_do(Py_filterbank * self, PyObject * args)79Py_filterbank_do(Py_filterbank * self, PyObject * args)
54{80{
55 PyObject *input;81 PyObject *input;
56 cvec_t *vec;82 cvec_t *vec;
57 fvec_t *out;
58 83
59 if (!PyArg_ParseTuple (args, "O", &input)) {84 if (!PyArg_ParseTuple (args, "O", &input)) {
60 return NULL;85 return NULL;
@@ -66,11 +91,9 @@ Py_filterbank_do(Py_filterbank * self, PyObject * args) · 5 unmodified lines
66 return NULL;91 return NULL;
67 }92 }
68 93
69 out = new_fvec (self->n_filters);
70
71 // compute the function94 // compute the function
72 aubio_filterbank_do (self->o, vec, out);95 aubio_filterbank_do (self->o, vec, self->out);
73 return (PyObject *)PyAubio_CFvecToArray(out);96 return (PyObject *)PyAubio_CFvecToArray(self->out);
74}97}
75 98
76AUBIO_MEMBERS_START(filterbank)99AUBIO_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