avcodec/iirfilter: Make ff_iir_filter_free_state() also zero the freed pointer
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 14 Oct 2014 16:52:51 +0000 (18:52 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 14 Oct 2014 18:46:15 +0000 (20:46 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/iirfilter.c
libavcodec/iirfilter.h
libavcodec/psymodel.c

index b47f91d..cb5871c 100644 (file)
@@ -299,9 +299,9 @@ void ff_iir_filter_flt(const struct FFIIRFilterCoeffs *c,
     }
 }
 
-av_cold void ff_iir_filter_free_state(struct FFIIRFilterState *state)
+av_cold void ff_iir_filter_free_statep(struct FFIIRFilterState **state)
 {
-    av_free(state);
+    av_freep(state);
 }
 
 av_cold void ff_iir_filter_free_coeffsp(struct FFIIRFilterCoeffs **coeffsp)
@@ -349,7 +349,7 @@ int main(void)
         printf("%6d %6d\n", x[i], y[i]);
 
     ff_iir_filter_free_coeffsp(&fcoeffs);
-    ff_iir_filter_free_state(fstate);
+    ff_iir_filter_free_statep(&fstate);
     return 0;
 }
 #endif /* TEST */
index cc9a661..6f7bba6 100644 (file)
@@ -107,11 +107,11 @@ struct FFIIRFilterState* ff_iir_filter_init_state(int order);
 void ff_iir_filter_free_coeffsp(struct FFIIRFilterCoeffs **coeffs);
 
 /**
- * Free filter state.
+ * Free and zero filter state.
  *
- * @param state pointer allocated with ff_iir_filter_init_state()
+ * @param state pointer to pointer allocated with ff_iir_filter_init_state()
  */
-void ff_iir_filter_free_state(struct FFIIRFilterState *state);
+void ff_iir_filter_free_statep(struct FFIIRFilterState **state);
 
 /**
  * Perform IIR filtering on signed 16-bit input samples.
index e7f3353..059cbef 100644 (file)
@@ -141,7 +141,7 @@ av_cold void ff_psy_preprocess_end(struct FFPsyPreprocessContext *ctx)
     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]);
+            ff_iir_filter_free_statep(&ctx->fstate[i]);
     av_freep(&ctx->fstate);
     av_free(ctx);
 }