summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--gst/matroska/ebml-read.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 1a1c6f63..4dfeef9d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-19 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+
+ * gst/matroska/ebml-read.c: (gst_ebml_read_buffer):
+ Allow for 0-sized buffers. Fixes length query problems in
+ starwars.mkv from the testsuite.
+
2005-01-19 Tim-Philipp Müller <tim at centricular dot net>
* gst/videobox/gstvideobox.c: (gst_video_box_copy_plane_i420),
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);
}