From 7522192fab2995abc74061b96801da0663701771 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 12 Nov 2007 17:59:40 +0000 Subject: gst/qtdemux/qtdemux.c: Properly free QTDemuxSamples array. Original commit message from CVS: * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state), (qtdemux_parse_samples): Properly free QTDemuxSamples array. Protect table write with a sensible check, some files apparently DO contain stts values starting with 0 :( --- ChangeLog | 8 ++++++++ gst/qtdemux/qtdemux.c | 12 ++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5aaf4c31..875891f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-12 Edward Hervey + + * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state), + (qtdemux_parse_samples): + Properly free QTDemuxSamples array. + Protect table write with a sensible check, some files apparently DO contain + stts values starting with 0 :( + 2007-11-12 Stefan Kost * gst/avi/gstavidemux.c: diff --git a/gst/qtdemux/qtdemux.c b/gst/qtdemux/qtdemux.c index 63dc97ec..1a933246 100644 --- a/gst/qtdemux/qtdemux.c +++ b/gst/qtdemux/qtdemux.c @@ -914,10 +914,12 @@ gst_qtdemux_change_state (GstElement * element, GstStateChange transition) if (stream->pad) gst_element_remove_pad (element, stream->pad); - g_free (stream->samples); + if (stream->samples) + g_free (stream->samples); if (stream->caps) gst_caps_unref (stream->caps); - g_free (stream->segments); + if (stream->segments) + g_free (stream->segments); g_free (stream); } qtdemux->n_streams = 0; @@ -2570,8 +2572,10 @@ qtdemux_parse_samples (GstQTDemux * qtdemux, QtDemuxStream * stream, for (i = 0; i < n_sample_syncs; i++) { /* note that the first sample is index 1, not 0 */ index = QT_UINT32 ((guint8 *) stss->data + offset); - samples[index - 1].keyframe = TRUE; - offset += 4; + if (index > 0) { + samples[index - 1].keyframe = TRUE; + offset += 4; + } } } } else { -- cgit