diff --git a/ChangeLog b/ChangeLog index 29ea9cd2cef..4833d7667b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-04-10 Tim-Philipp Müller + + * 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 * 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 fd4a48993e5..e9dbe5045c7 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 15431369fa6..179ea9ae9c4 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;