matroskademux: only unref buffer when no longer needed for cluster scanning
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 5 Oct 2010 14:01:19 +0000 (16:01 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 5 Oct 2010 14:03:10 +0000 (16:03 +0200)
Fixes #629047.

gst/matroska/matroska-demux.c

index 9ed6892..979ae3f 100644 (file)
@@ -2353,8 +2353,6 @@ gst_matroska_demux_search_cluster (GstMatroskaDemux * demux, gint64 * pos)
       newpos += cluster_pos;
       GST_DEBUG_OBJECT (demux,
           "found cluster ebml id at offset %" G_GINT64_FORMAT, newpos);
-      gst_buffer_unref (buf);
-      buf = NULL;
       /* extra checks whether we really sync'ed to a cluster:
        * - either it is the first and only cluster
        * - either there is a cluster after this one
@@ -2398,6 +2396,11 @@ gst_matroska_demux_search_cluster (GstMatroskaDemux * demux, gint64 * pos)
     }
   }
 
+  if (buf) {
+    gst_buffer_unref (buf);
+    buf = NULL;
+  }
+
   demux->offset = orig_offset;
   *pos = newpos;
   return ret;