DSOUND_MixerNorm: do not compare unrelated pointers.
diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c
index 453bad3..532a682 100644
--- a/dlls/dsound/dsound_main.c
+++ b/dlls/dsound/dsound_main.c
@@ -1826,14 +1826,13 @@
if ((dsb->freq == primarybuf->wfx.nSamplesPerSec) &&
(dsb->wfx.wBitsPerSample == primarybuf->wfx.wBitsPerSample) &&
(dsb->wfx.nChannels == primarybuf->wfx.nChannels)) {
+ DWORD bytesleft = dsb->buflen - dsb->playpos;
TRACE("(%p) Best case\n", dsb);
- if ((ibp + len) < (BYTE *)(dsb->buffer + dsb->buflen))
+ if (len <= bytesleft )
memcpy(obp, ibp, len);
else { /* wrap */
- memcpy(obp, ibp, dsb->buflen - dsb->playpos);
- memcpy(obp + (dsb->buflen - dsb->playpos),
- dsb->buffer,
- len - (dsb->buflen - dsb->playpos));
+ memcpy(obp, ibp, bytesleft );
+ memcpy(obp + bytesleft, dsb->buffer, len - bytesleft);
}
return len;
}