Apply the same patch from 72528be84fdc for adpcm data sent to mono destinations in addition to stereo destinations.
Signed-off-by: Brandon Moore moore.3071@osu.edu --- dlls/msadp32.acm/msadp32.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/msadp32.acm/msadp32.c b/dlls/msadp32.acm/msadp32.c index 2dc11b9239a..a68b13d58f6 100644 --- a/dlls/msadp32.acm/msadp32.c +++ b/dlls/msadp32.acm/msadp32.c @@ -319,7 +319,14 @@ static void cvtMMms16K(const ACMDRVSTREAMINSTANCE *adsi, { const unsigned char* in_src = src;
- assert(*src <= 6); + /* Catch a problem from Lord of the Rings War of the Ring where it + * passes invalid data. */ + if (*src > 6 || *(src + 1) > 6) + { + *ndst -= nblock * nsamp_blk * adsi->pwfxDst->nBlockAlign; + WARN("Invalid ADPCM data, stopping conversion\n"); + break; + } coeff = MSADPCM_CoeffSet[*src++];
idelta = R16(src); src += 2;