# HG changeset patch # User reimar # Date 1268162372 0 # Node ID 7296ecaa30ec7a7fb746fd250d4d785024b02de3 # Parent 264d062a3d99505672bd628a6adce409b83dd345 Improve handling of 0-size ogg packets. Fixes bug 1664. diff -r 264d062a3d99 -r 7296ecaa30ec libmpdemux/demux_ogg.c --- a/libmpdemux/demux_ogg.c Tue Mar 09 18:34:14 2010 +0000 +++ b/libmpdemux/demux_ogg.c Tue Mar 09 19:19:32 2010 +0000 @@ -262,6 +262,7 @@ static unsigned char* demux_ogg_read_packet(ogg_stream_t* os,ogg_packet* pack,float* pts,int* flags, int samplesize) { unsigned char* data = pack->packet; + int size = pack->bytes; *pts = 0; *flags = 0; @@ -300,7 +301,7 @@ /* header packets begin on 1-bit: thus check (*data&0x80). We don't have theora_state st, until all header packets were passed to the decoder. */ - if (!(*data&0x80)) + if (!size || !(*data&0x80)) { int keyframe_granule_shift=_ilog(os->keyframe_frequency_force-1); int64_t iframemask = (1 << keyframe_granule_shift) - 1;