aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-10-14 18:30:52 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-10-14 18:30:52 +0200
commit43fb16cf74718fe6c393c5f20d0bfaea4e3e8cb4 (patch)
treee2802a6f4f117a2a117720bfbd7e2542efd399bb
parent9946da49766384dd6e25585160da0b454d4a5cbc (diff)
downloadffmpeg-43fb16cf74718fe6c393c5f20d0bfaea4e3e8cb4.tar.gz
avcodec/iirfilter: Change ff_iir_filter_free_coeffs() so it clears the pointers as well
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/iirfilter.c13
-rw-r--r--libavcodec/iirfilter.h2
-rw-r--r--libavcodec/psymodel.c2
3 files changed, 9 insertions, 8 deletions
diff --git a/libavcodec/iirfilter.c b/libavcodec/iirfilter.c
index a2d9d11250..b47f91d7b4 100644
--- a/libavcodec/iirfilter.c
+++ b/libavcodec/iirfilter.c
@@ -196,7 +196,7 @@ av_cold struct FFIIRFilterCoeffs* ff_iir_filter_init_coeffs(void *avc,
return c;
init_fail:
- ff_iir_filter_free_coeffs(c);
+ ff_iir_filter_free_coeffsp(&c);
return NULL;
}
@@ -304,13 +304,14 @@ av_cold void ff_iir_filter_free_state(struct FFIIRFilterState *state)
av_free(state);
}
-av_cold void ff_iir_filter_free_coeffs(struct FFIIRFilterCoeffs *coeffs)
+av_cold void ff_iir_filter_free_coeffsp(struct FFIIRFilterCoeffs **coeffsp)
{
+ struct FFIIRFilterCoeffs *coeffs = *coeffsp;
if(coeffs){
- av_free(coeffs->cx);
- av_free(coeffs->cy);
+ av_freep(&coeffs->cx);
+ av_freep(&coeffs->cy);
}
- av_free(coeffs);
+ av_freep(coeffsp);
}
void ff_iir_filter_init(FFIIRFilterContext *f) {
@@ -347,7 +348,7 @@ int main(void)
for (i = 0; i < SIZE; i++)
printf("%6d %6d\n", x[i], y[i]);
- ff_iir_filter_free_coeffs(fcoeffs);
+ ff_iir_filter_free_coeffsp(&fcoeffs);
ff_iir_filter_free_state(fstate);
return 0;
}
diff --git a/libavcodec/iirfilter.h b/libavcodec/iirfilter.h
index 4ea6642215..cc9a661703 100644
--- a/libavcodec/iirfilter.h
+++ b/libavcodec/iirfilter.h
@@ -104,7 +104,7 @@ struct FFIIRFilterState* ff_iir_filter_init_state(int order);
*
* @param coeffs pointer allocated with ff_iir_filter_init_coeffs()
*/
-void ff_iir_filter_free_coeffs(struct FFIIRFilterCoeffs *coeffs);
+void ff_iir_filter_free_coeffsp(struct FFIIRFilterCoeffs **coeffs);
/**
* Free filter state.
diff --git a/libavcodec/psymodel.c b/libavcodec/psymodel.c
index 22d2497f78..e7f3353c55 100644
--- a/libavcodec/psymodel.c
+++ b/libavcodec/psymodel.c
@@ -138,7 +138,7 @@ void ff_psy_preprocess(struct FFPsyPreprocessContext *ctx, float **audio, int ch
av_cold void ff_psy_preprocess_end(struct FFPsyPreprocessContext *ctx)
{
int i;
- ff_iir_filter_free_coeffs(ctx->fcoeffs);
+ ff_iir_filter_free_coeffsp(&ctx->fcoeffs);
if (ctx->fstate)
for (i = 0; i < ctx->avctx->channels; i++)
ff_iir_filter_free_state(ctx->fstate[i]);