avcodec/iirfilter: Change ff_iir_filter_free_coeffs() so it clears the pointers as...
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 14 Oct 2014 16:30:52 +0000 (18:30 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 14 Oct 2014 16:30:52 +0000 (18:30 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/iirfilter.c
libavcodec/iirfilter.h
libavcodec/psymodel.c

index a2d9d11..b47f91d 100644 (file)
@@ -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;
 }
index 4ea6642..cc9a661 100644 (file)
@@ -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.
index 22d2497..e7f3353 100644 (file)
@@ -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]);