From 1f144436cb073647161372ea13df01c0862888ad Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sun, 12 Jan 2003 13:06:44 +0000 Subject: [PATCH] Avoid reads on freed memory (patch from vishnu) Original commit message from CVS: Avoid reads on freed memory (patch from vishnu) --- gst/gstqueue.c | 11 +++++++++-- plugins/elements/gstqueue.c | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/gst/gstqueue.c b/gst/gstqueue.c index b4adc32..690cae9 100644 --- a/gst/gstqueue.c +++ b/gst/gstqueue.c @@ -571,6 +571,8 @@ gst_queue_handle_src_event (GstPad *pad, GstEvent *event) { GstQueue *queue; gboolean res; + gint event_type; + gint flag_flush = 0; queue = GST_QUEUE (GST_OBJECT_PARENT (pad)); @@ -586,14 +588,19 @@ gst_queue_handle_src_event (GstPad *pad, GstEvent *event) return FALSE; } + event_type = GST_EVENT_TYPE (event); + if (event_type == GST_EVENT_SEEK) + flag_flush = GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH; + res = gst_pad_event_default (pad, event); - switch (GST_EVENT_TYPE (event)) { + + switch (event_type) { case GST_EVENT_FLUSH: GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "FLUSH event, flushing queue\n"); gst_queue_locked_flush (queue); break; case GST_EVENT_SEEK: - if (GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH) { + if (flag_flush) { gst_queue_locked_flush (queue); } default: diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c index b4adc32..690cae9 100644 --- a/plugins/elements/gstqueue.c +++ b/plugins/elements/gstqueue.c @@ -571,6 +571,8 @@ gst_queue_handle_src_event (GstPad *pad, GstEvent *event) { GstQueue *queue; gboolean res; + gint event_type; + gint flag_flush = 0; queue = GST_QUEUE (GST_OBJECT_PARENT (pad)); @@ -586,14 +588,19 @@ gst_queue_handle_src_event (GstPad *pad, GstEvent *event) return FALSE; } + event_type = GST_EVENT_TYPE (event); + if (event_type == GST_EVENT_SEEK) + flag_flush = GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH; + res = gst_pad_event_default (pad, event); - switch (GST_EVENT_TYPE (event)) { + + switch (event_type) { case GST_EVENT_FLUSH: GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, queue, "FLUSH event, flushing queue\n"); gst_queue_locked_flush (queue); break; case GST_EVENT_SEEK: - if (GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH) { + if (flag_flush) { gst_queue_locked_flush (queue); } default: -- 2.7.4