summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--gst/matroska/ebml-read.c7
-rw-r--r--gst/matroska/matroska-demux.c2
3 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 29ea9cd2..4833d766 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-04-10 Tim-Philipp Müller <tim at centricular dot net>
+
+ * gst/matroska/ebml-read.c: (gst_ebml_read_sint):
+ Don't try to modify read-only data.
+
+ * gst/matroska/matroska-demux.c:
+ (gst_matroska_demux_parse_blockgroup_or_simpleblock):
+ Fix comment (won't crash any longer now).
+
2006-04-10 Michael Smith <msmith@fluendo.com>
* ext/annodex/gstcmmlenc.c: (gst_cmml_enc_set_header_on_caps):
diff --git a/gst/matroska/ebml-read.c b/gst/matroska/ebml-read.c
index fd4a4899..e9dbe504 100644
--- a/gst/matroska/ebml-read.c
+++ b/gst/matroska/ebml-read.c
@@ -487,7 +487,6 @@ gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num)
if (!gst_ebml_read_buffer (ebml, id, &buf))
return FALSE;
- data = GST_BUFFER_DATA (buf);
size = GST_BUFFER_SIZE (buf);
if (size < 1 || size > 8) {
GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL),
@@ -496,10 +495,16 @@ gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num)
gst_buffer_unref (buf);
return FALSE;
}
+
+ buf = gst_buffer_make_writable (buf);
+
+ data = GST_BUFFER_DATA (buf);
+
if (data[0] & 0x80) {
negative = 1;
data[0] &= ~0x80;
}
+
*num = 0;
while (n < size) {
*num = (*num << 8) | data[n++];
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 15431369..179ea9ae 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -2274,7 +2274,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux,
}
case GST_MATROSKA_ID_REFERENCEBLOCK:{
- /* FIXME: this segfaults
+ /* FIXME: implement support for ReferenceBlock
gint64 num;
if (!gst_ebml_read_sint (ebml, &id, &num)) {
res = FALSE;