summaryrefslogtreecommitdiff
path: root/gst/midi
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2013-03-21 17:16:24 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2013-03-21 17:16:24 +0100
commit7a14606b51499177f501a295881e8032beb9c06a (patch)
treee1ad96c4581ed5e9655e6053d1a8cf0f71dce299 /gst/midi
parent5256b6bf899f63aacafeeb3ff1a01d3a31114397 (diff)
downloadgstreamer-plugins-bad-7a14606b51499177f501a295881e8032beb9c06a.tar.gz
midiparse: don't leak midi data
Diffstat (limited to 'gst/midi')
-rw-r--r--gst/midi/midiparse.c6
-rw-r--r--gst/midi/midiparse.h1
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;