diff options
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; |