Alex Villacís Lasso wrote:
This check is necessary until local codec loading is in CVS. Failure scenario fixed is: app instructs to load local ACM codec, fails, doesn't notice failure, requests codec info, fails, again doesn't notice failure, submits zeroed structure to PCM converter --> assertion failed.
Changelog: * Check for nAvgBytesPerSec == 0 in PCM converter instead of allowing assertion to fail.
Alex Villacís Lasso
------------------------------------------------------------------------
--- wine-0.9.5-cvs/dlls/msacm/pcmconverter.c 2005-11-28 15:57:25.000000000 -0500 +++ wine-0.9.5-cvs-patch/dlls/msacm/pcmconverter.c 2006-01-09 21:17:07.000000000 -0500 @@ -945,12 +945,20 @@ switch (adss->fdwSize) { case ACM_STREAMSIZEF_DESTINATION: /* cbDstLength => cbSrcLength */ + if (!adsi->pwfxDst->nAvgBytesPerSec) { + ERR("adsi->pwfxDst->nAvgBytesPerSec == %lu\n", adsi->pwfxDst->nAvgBytesPerSec); + return MMSYSERR_INVALPARAM; + } adss->cbSrcLength = PCM_round(adss->cbDstLength & dstMask, adsi->pwfxSrc->nAvgBytesPerSec, adsi->pwfxDst->nAvgBytesPerSec) & srcMask; break; case ACM_STREAMSIZEF_SOURCE: /* cbSrcLength => cbDstLength */ + if (!adsi->pwfxSrc->nAvgBytesPerSec) { + ERR("adsi->pwfxSrc->nAvgBytesPerSec == %lu\n", adsi->pwfxSrc->nAvgBytesPerSec); + return MMSYSERR_INVALPARAM; + } adss->cbDstLength = PCM_round(adss->cbSrcLength & srcMask, adsi->pwfxDst->nAvgBytesPerSec, adsi->pwfxSrc->nAvgBytesPerSec) & dstMask;
------------------------------------------------------------------------
Any comment on this patch? Alex Villacís Lasso