diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2013-03-21 17:16:24 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2013-03-21 17:16:24 +0100 |
commit | 7a14606b51499177f501a295881e8032beb9c06a (patch) | |
tree | e1ad96c4581ed5e9655e6053d1a8cf0f71dce299 /gst/midi | |
parent | 5256b6bf899f63aacafeeb3ff1a01d3a31114397 (diff) | |
download | gstreamer-plugins-bad-7a14606b51499177f501a295881e8032beb9c06a.tar.gz |
midiparse: don't leak midi data
Diffstat (limited to 'gst/midi')
-rw-r--r-- | gst/midi/midiparse.c | 6 | ||||
-rw-r--r-- | gst/midi/midiparse.h | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/gst/midi/midiparse.c b/gst/midi/midiparse.c index fd9c17a2c..56c482cbe 100644 --- a/gst/midi/midiparse.c +++ b/gst/midi/midiparse.c @@ -190,6 +190,7 @@ gst_midi_parse_finalize (GObject * object) midiparse = GST_MIDI_PARSE (object); g_object_unref (midiparse->adapter); + g_free (midiparse->data); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -806,6 +807,7 @@ gst_midi_parse_parse_song (GstMidiParse * midiparse) size = gst_adapter_available (midiparse->adapter); data = gst_adapter_take (midiparse->adapter, size); + midiparse->data = data; midiparse->tempo = DEFAULT_TEMPO; if (!find_midi_chunk (midiparse, data, size, &offset, &length)) @@ -840,13 +842,11 @@ gst_midi_parse_parse_song (GstMidiParse * midiparse) short_file: { GST_ERROR_OBJECT (midiparse, "not enough data"); - g_free (data); return GST_FLOW_ERROR; } invalid_format: { GST_ERROR_OBJECT (midiparse, "invalid format"); - g_free (data); return GST_FLOW_ERROR; } } @@ -1087,6 +1087,8 @@ gst_midi_parse_change_state (GstElement * element, GstStateChange transition) break; case GST_STATE_CHANGE_PAUSED_TO_READY: gst_adapter_clear (midiparse->adapter); + g_free (midiparse->data); + midiparse->data = NULL; break; case GST_STATE_CHANGE_READY_TO_NULL: break; diff --git a/gst/midi/midiparse.h b/gst/midi/midiparse.h index cc7b3796f..1381536bb 100644 --- a/gst/midi/midiparse.h +++ b/gst/midi/midiparse.h @@ -67,6 +67,7 @@ struct _GstMidiParse guint64 offset; GstAdapter *adapter; + guint8 *data; /* output data */ gboolean discont; |