midiparse: don't leak midi data

This commit is contained in:
Wim Taymans 2013-03-21 17:16:24 +01:00
parent 5256b6bf89
commit 7a14606b51
2 changed files with 5 additions and 2 deletions

View file

@ -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;

View file

@ -67,6 +67,7 @@ struct _GstMidiParse
guint64 offset;
GstAdapter *adapter;
guint8 *data;
/* output data */
gboolean discont;