From 27486729d1838d119f40de6460c459d93cef2d0f Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 7 Jun 2012 12:33:31 +0100 Subject: [PATCH] vp8: fix codec state leaks I only tested that vp8enc ! vp8dec does not crash, as valgrind does not grok at least one of the instructions used by vp8enc, preventing me from checking a leak, and the lack of one after the patch. --- ext/vp8/gstvp8dec.c | 4 ++++ ext/vp8/gstvp8enc.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/ext/vp8/gstvp8dec.c b/ext/vp8/gstvp8dec.c index 25538a8139..cfdb3e1987 100644 --- a/ext/vp8/gstvp8dec.c +++ b/ext/vp8/gstvp8dec.c @@ -306,6 +306,10 @@ gst_vp8_dec_reset (GstVideoDecoder * base_video_decoder, gboolean hard) gst_video_codec_state_unref (decoder->output_state); decoder->output_state = NULL; } + if (hard && decoder->input_state) { + gst_video_codec_state_unref (decoder->input_state); + decoder->input_state = NULL; + } if (decoder->decoder_inited) vpx_codec_destroy (&decoder->decoder); decoder->decoder_inited = FALSE; diff --git a/ext/vp8/gstvp8enc.c b/ext/vp8/gstvp8enc.c index fc3919e63e..aa4d85ac8c 100644 --- a/ext/vp8/gstvp8enc.c +++ b/ext/vp8/gstvp8enc.c @@ -467,6 +467,9 @@ gst_vp8_enc_finalize (GObject * object) g_free (gst_vp8_enc->multipass_cache_file); gst_vp8_enc->multipass_cache_file = NULL; + if (gst_vp8_enc->input_state) + gst_video_codec_state_unref (gst_vp8_enc->input_state); + G_OBJECT_CLASS (parent_class)->finalize (object); }