Index: lib/res0.c =================================================================== --- lib/res0.c (revision 13152) +++ lib/res0.c (revision 13153) @@ -375,7 +375,7 @@ static long **_01class(vorbis_block *vb, /* move all this setup out later */ int samples_per_partition=info->grouping; int possible_partitions=info->partitions; - int end=(info->end<vb->pcmend?info->end:vb->pcmend); + int end=(info->end<vb->pcmend/2?info->end:vb->pcmend/2); int n=end-info->begin; if(n>0){ @@ -446,7 +446,7 @@ static long **_2class(vorbis_block *vb,v /* move all this setup out later */ int samples_per_partition=info->grouping; int possible_partitions=info->partitions; - int end=(info->end<vb->pcmend?info->end:vb->pcmend); + int end=(info->end<vb->pcmend/2?info->end:vb->pcmend/2); int n=end-info->begin; if(n>0){ @@ -512,7 +512,7 @@ static int _01forward(oggpack_buffer *op int samples_per_partition=info->grouping; int possible_partitions=info->partitions; int partitions_per_word=look->phrasebook->dim; - int end=(info->end<vb->pcmend?info->end:vb->pcmend); + int end=(info->end<vb->pcmend/2?info->end:vb->pcmend/2); int n=end-info->begin; if(n>0){ @@ -628,7 +628,7 @@ static int _01inverse(vorbis_block *vb,v /* move all this setup out later */ int samples_per_partition=info->grouping; int partitions_per_word=look->phrasebook->dim; - int end=(info->end<vb->pcmend?info->end:vb->pcmend); + int end=(info->end<vb->pcmend/2?info->end:vb->pcmend/2); int n=end-info->begin; if(n>0){ @@ -847,7 +847,7 @@ int res2_inverse(vorbis_block *vb,vorbis /* move all this setup out later */ int samples_per_partition=info->grouping; int partitions_per_word=look->phrasebook->dim; - int end=(info->end<vb->pcmend?info->end:vb->pcmend); + int end=(info->end<vb->pcmend/2?info->end:vb->pcmend/2); int n=end-info->begin; if(n>0){