summaryrefslogtreecommitdiffstats
path: root/gst/matroska/ebml-read.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-01-19 19:31:54 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-01-19 19:31:54 +0000
commit2b6207564c275857d1c52b96ea72a013fd4a1dfd (patch)
tree4ec5f6f5b3413fa89739ccbd2b3013c7d19e0489 /gst/matroska/ebml-read.c
parentb43e960650ee59a3ffbf5ee49d74de674291ed25 (diff)
gst/matroska/ebml-read.c: Allow for 0-sized buffers. Fixes length query problems in starwars.mkv from the testsuite.
Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_read_buffer): Allow for 0-sized buffers. Fixes length query problems in starwars.mkv from the testsuite.
Diffstat (limited to 'gst/matroska/ebml-read.c')
-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);
}