From 4cbcba6b1f5db61b2f903d74406de41e6a2f4e97 Mon Sep 17 00:00:00 2001 From: Monty Date: Wed, 4 Jul 2007 05:13:33 +0000 Subject: [PATCH] Well. *that* deadlock bug has been lurking in seeking for a long time. A bigger chunksize + just the right annodex file finally reproduced it here. svn path=/trunk/vorbis/; revision=13217 --- lib/vorbisfile.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/vorbisfile.c b/lib/vorbisfile.c index e205f65c..f5710e80 100644 --- a/lib/vorbisfile.c +++ b/lib/vorbisfile.c @@ -511,12 +511,11 @@ static void _prefetch_all_headers(OggVorbis_File *vf, ogg_int64_t dataoffset){ vorbis_comment_clear(vf->vc+i); break; } - if(ogg_page_serialno(&og)!=vf->serialnos[i]) - continue; - - if(ogg_page_granulepos(&og)!=-1){ - vf->pcmlengths[i*2+1]=ogg_page_granulepos(&og)-vf->pcmlengths[i*2]; - break; + if(ogg_page_serialno(&og)==vf->serialnos[i]){ + if(ogg_page_granulepos(&og)!=-1){ + vf->pcmlengths[i*2+1]=ogg_page_granulepos(&og)-vf->pcmlengths[i*2]; + break; + } } vf->offset=ret; } @@ -1356,7 +1355,7 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ result=_seek_helper(vf,bisect); if(result) goto seek_error; }else{ - end=result; + end=bisect; endtime=granulepos; break; } -- GitLab