diff options
author | Julien Moutte <julien@moutte.net> | 2006-02-25 11:37:10 +0000 |
---|---|---|
committer | Julien Moutte <julien@moutte.net> | 2006-02-25 11:37:10 +0000 |
commit | 36e55fc8582b7c256ddf606ff096eafd10c237ab (patch) | |
tree | e38c4c0dbe707688b9ec8e73a198595fddc65a8e /ext/annodex/gstcmmlenc.c | |
parent | 22e1a6cf15645507e499bc00f69d3ea5339de801 (diff) |
ext/annodex/: Fix possible memleaks.
Original commit message from CVS:
2006-02-25 Julien MOUTTE <julien@moutte.net>
* ext/annodex/gstcmmldec.c: (gst_cmml_dec_class_init),
(gst_cmml_dec_finalize), (gst_cmml_dec_change_state):
* ext/annodex/gstcmmlenc.c: (gst_cmml_enc_class_init),
(gst_cmml_enc_finalize), (gst_cmml_enc_change_state):
* ext/annodex/gstcmmlutils.c: (gst_cmml_track_list_destroy): Fix
possible memleaks.
Diffstat (limited to 'ext/annodex/gstcmmlenc.c')
-rw-r--r-- | ext/annodex/gstcmmlenc.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ext/annodex/gstcmmlenc.c b/ext/annodex/gstcmmlenc.c index 7bc98bc8..9600a96b 100644 --- a/ext/annodex/gstcmmlenc.c +++ b/ext/annodex/gstcmmlenc.c @@ -110,6 +110,8 @@ static GstFlowReturn gst_cmml_enc_push_clip (GstCmmlEnc * enc, GstCmmlTagClip * clip, GstClockTime prev_clip_time); static GstFlowReturn gst_cmml_enc_push (GstCmmlEnc * enc, GstBuffer * buffer); +static void gst_cmml_enc_finalize (GObject * object); + static void gst_cmml_enc_base_init (gpointer g_class) { @@ -129,6 +131,7 @@ gst_cmml_enc_class_init (GstCmmlEncClass * enc_class) klass->get_property = gst_cmml_enc_get_property; klass->set_property = gst_cmml_enc_set_property; + klass->finalize = gst_cmml_enc_finalize; g_object_class_install_property (klass, GST_CMML_ENC_GRANULERATE_N, g_param_spec_int64 ("granule-rate-numerator", @@ -211,6 +214,19 @@ gst_cmml_enc_get_property (GObject * object, guint property_id, } } +static void +gst_cmml_enc_finalize (GObject * object) +{ + GstCmmlEnc *enc = GST_CMML_ENC (object); + + if (enc->tracks) { + gst_cmml_track_list_destroy (enc->tracks); + enc->tracks = NULL; + } + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + static GstStateChangeReturn gst_cmml_enc_change_state (GstElement * element, GstStateChange transition) { @@ -244,6 +260,7 @@ gst_cmml_enc_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_PAUSED_TO_READY: { gst_cmml_track_list_destroy (enc->tracks); + enc->tracks = NULL; g_free (enc->preamble); gst_cmml_parser_free (enc->parser); break; |