Avoid reads on freed memory (patch from vishnu)
authorWim Taymans <wim.taymans@gmail.com>
Sun, 12 Jan 2003 13:06:44 +0000 (13:06 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Sun, 12 Jan 2003 13:06:44 +0000 (13:06 +0000)
Original commit message from CVS:
Avoid reads on freed memory (patch from vishnu)

gst/gstqueue.c
plugins/elements/gstqueue.c

index b4adc32..690cae9 100644 (file)
@@ -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:
index b4adc32..690cae9 100644 (file)
@@ -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: