Mercurial > libavformat.hg
changeset 2290:572f7077ba40 libavformat
Fix get_str/get_str8() to also work if the target string is not long enough to
fit all data from the container string, and allow NULL as a string also to
simply skip the string altogether.
patch by Ronald S. Bultje, rsbultje gmail com
author | diego |
---|---|
date | Sat, 28 Jul 2007 18:02:19 +0000 |
parents | e3fab578269d |
children | 8f90908f3c31 |
files | rmdec.c |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/rmdec.c Sat Jul 28 12:46:26 2007 +0000 +++ b/rmdec.c Sat Jul 28 18:02:19 2007 +0000 @@ -25,29 +25,31 @@ static void get_str(ByteIOContext *pb, char *buf, int buf_size) { int len, i; - char *q; + char *q, r; len = get_be16(pb); q = buf; for(i=0;i<len;i++) { + r = get_byte(pb); if (i < buf_size - 1) - *q++ = get_byte(pb); + *q++ = r; } - *q = '\0'; + if (buf_size > 0) *q = '\0'; } static void get_str8(ByteIOContext *pb, char *buf, int buf_size) { int len, i; - char *q; + char *q, r; len = get_byte(pb); q = buf; for(i=0;i<len;i++) { + r = get_byte(pb); if (i < buf_size - 1) - *q++ = get_byte(pb); + *q++ = r; } - *q = '\0'; + if (buf_size > 0) *q = '\0'; } static int rm_read_audio_stream_info(AVFormatContext *s, AVStream *st,