On Wed, 2013-02-13 at 17:26 +0100, Peter Meerwald wrote: > From: Peter Meerwald <p.meerwald at bct-electronic.com> > > was simply absent > > Signed-off-by: Peter Meerwald <p.meerwald at bct-electronic.com> > --- > src/modules/echo-cancel/adrian-aec.c | 11 +++++++++++ > src/modules/echo-cancel/adrian-aec.h | 3 ++- > src/modules/echo-cancel/adrian.c | 6 ++++-- > src/modules/echo-cancel/adrian.h | 1 + > 4 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/src/modules/echo-cancel/adrian-aec.c b/src/modules/echo-cancel/adrian-aec.c > index 1476ee4..9134212 100644 > --- a/src/modules/echo-cancel/adrian-aec.c > +++ b/src/modules/echo-cancel/adrian-aec.c > @@ -106,6 +106,17 @@ AEC* AEC_init(int RATE, int have_vector) > return a; > } > > +void AEC_done(AEC *a) { > + if (a) { The convention is to not allow NULL to be passed to free functions (pa_xfree() being an exception). I replaced this if with an assertion. > + pa_xfree(a->Fx); > + pa_xfree(a->Fe); > + pa_xfree(a->acMic); > + pa_xfree(a->acSpk); > + pa_xfree(a->cutoff); I don't understand why these are allocated from the heap, but that's not your problem... > diff --git a/src/modules/echo-cancel/adrian.h b/src/modules/echo-cancel/adrian.h > index 639fa9e..4ace392 100644 > --- a/src/modules/echo-cancel/adrian.h > +++ b/src/modules/echo-cancel/adrian.h > @@ -28,4 +28,5 @@ > typedef struct AEC AEC; > > AEC* AEC_init(int RATE, int have_vector); > +void AEC_done(AEC *a); > int AEC_doAEC(AEC *a, int d_, int x_); This seems pretty pointless header (duplicates adrian-aec.h), but again not your problem. -- Tanu