[theora-dev] AMD64 bug
Peter De Wachter
pdewacht at vub.ac.be
Thu Aug 24 14:10:20 PDT 2006
The theora_unpack_comment casts a pointer-to-int to pointer-to-long. This
is incorrect on AMD64, where ints and longs are of different size. On my
system (Debian unstable, gcc 4.1) this causes players to crash when they
reach the end of a movie. The patch below fixes this bug.
--- libtheora-0.0.0.alpha7/lib/toplevel.c 2006-06-13 00:57:36.000000000 +0200
+++ libtheora-pdw/lib/toplevel.c 2006-08-19 16:55:30.000000000 +0200
@@ -172,7 +172,7 @@
static int _theora_unpack_comment(theora_comment *tc, oggpack_buffer *opb){
int i;
- long len;
+ long len,tmp;
_tp_readlsbint(opb,&len);
if(len<0)return(OC_BADHEADER);
@@ -180,7 +180,8 @@
_tp_readbuffer(opb,tc->vendor, len);
tc->vendor[len]='\0';
- _tp_readlsbint(opb,(long *) &tc->comments);
+ _tp_readlsbint(opb,&tmp);
+ tc->comments=tmp;
if(tc->comments<0)goto parse_err;
tc->user_comments=_ogg_calloc(tc->comments,sizeof(*tc->user_comments));
tc->comment_lengths=_ogg_calloc(tc->comments,sizeof(*tc->comment_lengths));
More information about the theora-dev
mailing list