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