Commit 14920bae authored by Timothy B. Terriberry's avatar Timothy B. Terriberry

Make false continued packet handling consistent

A false continued packet occurs if the previous page ended at the
 end of a packet, with no sequence number gap and no continued data
 on that page, while the current page has the continued packet flag
 set.
Previously, if you drained all of the buffered packet data by
 repeatedly calling ogg_stream_packetout() after submitting the
 previous page but before submitting the current page, libogg would
 discard the continued data at the beggining of the current page.
However, if you left the previous page's data in the buffer, then
 libogg would happily return the continued data at the start of the
 current page as a separate packet when you eventually did call
 ogg_stream_packetout().

This patch makes libogg consistently discard this data.
parent a2df21b3
......@@ -875,6 +875,7 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){
some segments */
if(continued){
if(os->lacing_fill<1 ||
(os->lacing_vals[os->lacing_fill-1]&0xff)<255 ||
os->lacing_vals[os->lacing_fill-1]==0x400){
bos=0;
for(;segptr<segments;segptr++){
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment