summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst')
-rw-r--r--gst/matroska/ebml-read.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gst/matroska/ebml-read.c b/gst/matroska/ebml-read.c
index c9e9828f..022d3450 100644
--- a/gst/matroska/ebml-read.c
+++ b/gst/matroska/ebml-read.c
@@ -500,12 +500,18 @@ gst_ebml_read_buffer (GstEbmlRead * ebml, guint32 * id, GstBuffer ** buf)
if ((bytes = gst_ebml_read_element_id (ebml, id, NULL)) < 0)
return FALSE;
+
gst_bytestream_flush_fast (ebml->bs, bytes);
if ((bytes = gst_ebml_read_element_length (ebml, &length)) < 0)
return FALSE;
+
gst_bytestream_flush_fast (ebml->bs, bytes);
ebml->id_cache = 0;
+ if (length == 0) {
+ *buf = gst_buffer_new ();
+ return TRUE;
+ }
return ((*buf = gst_ebml_read_element_data (ebml, length)) != NULL);
}