mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
midiparse: don't leak midi data
This commit is contained in:
parent
5256b6bf89
commit
7a14606b51
2 changed files with 5 additions and 2 deletions
|
@ -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;
|
||||
|
|
|
@ -67,6 +67,7 @@ struct _GstMidiParse
|
|||
|
||||
guint64 offset;
|
||||
GstAdapter *adapter;
|
||||
guint8 *data;
|
||||
|
||||
/* output data */
|
||||
gboolean discont;
|
||||
|
|
Loading…
Reference in a new issue