From: Paul Brossier Date: Sat, 24 Nov 2018 17:21:54 +0000 (+0100) Subject: [tempo] make sure all objects have been created, safer del_ method X-Git-Tag: 0.4.9~164^2~4 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=b5a0479816f1c7a51ff60b58a0499d7a34f48dd8;p=aubio.git [tempo] make sure all objects have been created, safer del_ method --- diff --git a/src/tempo/tempo.c b/src/tempo/tempo.c index a52beaf5..4b91c9d6 100644 --- a/src/tempo/tempo.c +++ b/src/tempo/tempo.c @@ -216,12 +216,17 @@ aubio_tempo_t * new_aubio_tempo (const char_t * tempo_mode, o2 = new_aubio_specdesc(type_onset2,buffer_size); onset2 = new_fvec(1); }*/ + if (!o->dfframe || !o->fftgrain || !o->out || !o->pv || + !o->pp || !o->od || !o->of || !o->bt || !o->onset) { + AUBIO_ERR("tempo: failed creating tempo object\n"); + goto beach; + } o->last_tatum = 0; o->tatum_signature = 4; return o; beach: - AUBIO_FREE(o); + del_aubio_tempo(o); return NULL; } @@ -278,15 +283,23 @@ uint_t aubio_tempo_set_tatum_signature (aubio_tempo_t *o, uint_t signature) { void del_aubio_tempo (aubio_tempo_t *o) { - del_aubio_specdesc(o->od); - del_aubio_beattracking(o->bt); - del_aubio_peakpicker(o->pp); - del_aubio_pvoc(o->pv); - del_fvec(o->out); - del_fvec(o->of); - del_cvec(o->fftgrain); - del_fvec(o->dfframe); - del_fvec(o->onset); + if (o->od) + del_aubio_specdesc(o->od); + if (o->bt) + del_aubio_beattracking(o->bt); + if (o->pp) + del_aubio_peakpicker(o->pp); + if (o->pv) + del_aubio_pvoc(o->pv); + if (o->out) + del_fvec(o->out); + if (o->of) + del_fvec(o->of); + if (o->fftgrain) + del_cvec(o->fftgrain); + if (o->dfframe) + del_fvec(o->dfframe); + if (o->onset) + del_fvec(o->onset); AUBIO_FREE(o); - return; }