From: Paul Brossier Date: Thu, 12 Jan 2017 21:59:04 +0000 (+0100) Subject: src/pitch/pitch.c: return NULL if creation failed X-Git-Tag: 0.4.5~109 X-Git-Url: https://git.aubio.org/?a=commitdiff_plain;h=4cb7a0ab8d9ff08153e4c8d392d6cbd69b29eed4;p=aubio.git src/pitch/pitch.c: return NULL if creation failed --- diff --git a/src/pitch/pitch.c b/src/pitch/pitch.c index 00159985..e0918712 100644 --- a/src/pitch/pitch.c +++ b/src/pitch/pitch.c @@ -155,6 +155,7 @@ new_aubio_pitch (const char_t * pitch_mode, case aubio_pitcht_yin: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchyin (bufsize); + if (!p->p_object) goto beach; p->detect_cb = aubio_pitch_do_yin; p->conf_cb = (aubio_pitch_get_conf_t)aubio_pitchyin_get_confidence; aubio_pitchyin_set_tolerance (p->p_object, 0.15); @@ -162,6 +163,7 @@ new_aubio_pitch (const char_t * pitch_mode, case aubio_pitcht_mcomb: p->filtered = new_fvec (hopsize); p->pv = new_aubio_pvoc (bufsize, hopsize); + if (!p->pv) goto beach; p->fftgrain = new_cvec (bufsize); p->p_object = new_aubio_pitchmcomb (bufsize, hopsize); p->filter = new_aubio_filter_c_weighting (samplerate); @@ -170,6 +172,7 @@ new_aubio_pitch (const char_t * pitch_mode, case aubio_pitcht_fcomb: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchfcomb (bufsize, hopsize); + if (!p->p_object) goto beach; p->detect_cb = aubio_pitch_do_fcomb; break; case aubio_pitcht_schmitt: @@ -180,6 +183,7 @@ new_aubio_pitch (const char_t * pitch_mode, case aubio_pitcht_yinfft: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchyinfft (samplerate, bufsize); + if (!p->p_object) goto beach; p->detect_cb = aubio_pitch_do_yinfft; p->conf_cb = (aubio_pitch_get_conf_t)aubio_pitchyinfft_get_confidence; aubio_pitchyinfft_set_tolerance (p->p_object, 0.85); @@ -187,6 +191,7 @@ new_aubio_pitch (const char_t * pitch_mode, case aubio_pitcht_specacf: p->buf = new_fvec (bufsize); p->p_object = new_aubio_pitchspecacf (bufsize); + if (!p->p_object) goto beach; p->detect_cb = aubio_pitch_do_specacf; p->conf_cb = (aubio_pitch_get_conf_t)aubio_pitchspecacf_get_tolerance; aubio_pitchspecacf_set_tolerance (p->p_object, 0.85); @@ -197,6 +202,8 @@ new_aubio_pitch (const char_t * pitch_mode, return p; beach: + if (p->filtered) del_fvec(p->filtered); + if (p->buf) del_fvec(p->buf); AUBIO_FREE(p); return NULL; }