baseparse: fix invalid memory access in debug messages
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Thu, 7 Jul 2011 13:57:18 +0000 (14:57 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Thu, 7 Jul 2011 13:57:18 +0000 (14:57 +0100)
Don't use buffers that we've given away or unrefed in debug messages.

libs/gst/base/gstbaseparse.c

index e0158ce..8772aad 100644 (file)
@@ -1925,9 +1925,10 @@ gst_base_parse_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
     ret = GST_FLOW_OK;
   } else if (ret == GST_FLOW_OK) {
     if (parse->segment.rate > 0.0) {
-      ret = gst_pad_push (parse->srcpad, buffer);
-      GST_LOG_OBJECT (parse, "frame (%d bytes) pushed: %s",
+      GST_LOG_OBJECT (parse, "pushing frame (%d bytes) now..",
           GST_BUFFER_SIZE (buffer), gst_flow_get_name (ret));
+      ret = gst_pad_push (parse->srcpad, buffer);
+      GST_LOG_OBJECT (parse, "frame pushed, flow %s", gst_flow_get_name (ret));
     } else {
       GST_LOG_OBJECT (parse, "frame (%d bytes) queued for now",
           GST_BUFFER_SIZE (buffer));
@@ -1936,9 +1937,9 @@ gst_base_parse_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
       ret = GST_FLOW_OK;
     }
   } else {
-    gst_buffer_unref (buffer);
     GST_LOG_OBJECT (parse, "frame (%d bytes) not pushed: %s",
         GST_BUFFER_SIZE (buffer), gst_flow_get_name (ret));
+    gst_buffer_unref (buffer);
     /* if we are not sufficiently in control, let upstream decide on EOS */
     if (ret == GST_FLOW_UNEXPECTED &&
         (parse->priv->passthrough ||