mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 05:16:13 +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);
|
midiparse = GST_MIDI_PARSE (object);
|
||||||
|
|
||||||
g_object_unref (midiparse->adapter);
|
g_object_unref (midiparse->adapter);
|
||||||
|
g_free (midiparse->data);
|
||||||
|
|
||||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
@ -806,6 +807,7 @@ gst_midi_parse_parse_song (GstMidiParse * midiparse)
|
||||||
size = gst_adapter_available (midiparse->adapter);
|
size = gst_adapter_available (midiparse->adapter);
|
||||||
data = gst_adapter_take (midiparse->adapter, size);
|
data = gst_adapter_take (midiparse->adapter, size);
|
||||||
|
|
||||||
|
midiparse->data = data;
|
||||||
midiparse->tempo = DEFAULT_TEMPO;
|
midiparse->tempo = DEFAULT_TEMPO;
|
||||||
|
|
||||||
if (!find_midi_chunk (midiparse, data, size, &offset, &length))
|
if (!find_midi_chunk (midiparse, data, size, &offset, &length))
|
||||||
|
@ -840,13 +842,11 @@ gst_midi_parse_parse_song (GstMidiParse * midiparse)
|
||||||
short_file:
|
short_file:
|
||||||
{
|
{
|
||||||
GST_ERROR_OBJECT (midiparse, "not enough data");
|
GST_ERROR_OBJECT (midiparse, "not enough data");
|
||||||
g_free (data);
|
|
||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
}
|
}
|
||||||
invalid_format:
|
invalid_format:
|
||||||
{
|
{
|
||||||
GST_ERROR_OBJECT (midiparse, "invalid format");
|
GST_ERROR_OBJECT (midiparse, "invalid format");
|
||||||
g_free (data);
|
|
||||||
return GST_FLOW_ERROR;
|
return GST_FLOW_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1087,6 +1087,8 @@ gst_midi_parse_change_state (GstElement * element, GstStateChange transition)
|
||||||
break;
|
break;
|
||||||
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
||||||
gst_adapter_clear (midiparse->adapter);
|
gst_adapter_clear (midiparse->adapter);
|
||||||
|
g_free (midiparse->data);
|
||||||
|
midiparse->data = NULL;
|
||||||
break;
|
break;
|
||||||
case GST_STATE_CHANGE_READY_TO_NULL:
|
case GST_STATE_CHANGE_READY_TO_NULL:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -67,6 +67,7 @@ struct _GstMidiParse
|
||||||
|
|
||||||
guint64 offset;
|
guint64 offset;
|
||||||
GstAdapter *adapter;
|
GstAdapter *adapter;
|
||||||
|
guint8 *data;
|
||||||
|
|
||||||
/* output data */
|
/* output data */
|
||||||
gboolean discont;
|
gboolean discont;
|
||||||
|
|
Loading…
Reference in a new issue