From: Piotr Caban Subject: [PATCH 2/3] winmm: Save data that was not yet written in mmioSetInfo Message-Id: <54E747BF.7010305@codeweavers.com> Date: Fri, 20 Feb 2015 15:42:07 +0100 --- dlls/winmm/mmio.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c index 16532bf..ad73564 100644 --- a/dlls/winmm/mmio.c +++ b/dlls/winmm/mmio.c @@ -949,25 +949,23 @@ MMRESULT WINAPI mmioGetInfo(HMMIO hmmio, MMIOINFO* lpmmioinfo, UINT uFlags) */ MMRESULT WINAPI mmioSetInfo(HMMIO hmmio, const MMIOINFO* lpmmioinfo, UINT uFlags) { - LPWINE_MMIO wm; + LPWINE_MMIO wm; TRACE("(%p,%p,0x%08x)\n",hmmio,lpmmioinfo,uFlags); if ((wm = MMIO_Get(hmmio)) == NULL) - return MMSYSERR_INVALHANDLE; + return MMSYSERR_INVALHANDLE; /* check pointers coherence */ if (lpmmioinfo->pchNext < wm->info.pchBuffer || - lpmmioinfo->pchNext > wm->info.pchBuffer + wm->info.cchBuffer || - lpmmioinfo->pchEndRead < wm->info.pchBuffer || - lpmmioinfo->pchEndRead > wm->info.pchBuffer + wm->info.cchBuffer || - lpmmioinfo->pchEndWrite < wm->info.pchBuffer || - lpmmioinfo->pchEndWrite > wm->info.pchBuffer + wm->info.cchBuffer) - return MMSYSERR_INVALPARAM; - - wm->info.pchNext = lpmmioinfo->pchNext; - wm->info.pchEndRead = lpmmioinfo->pchEndRead; + lpmmioinfo->pchNext > wm->info.pchBuffer + wm->info.cchBuffer || + lpmmioinfo->pchEndRead < wm->info.pchBuffer || + lpmmioinfo->pchEndRead > wm->info.pchBuffer + wm->info.cchBuffer || + lpmmioinfo->pchEndWrite < wm->info.pchBuffer || + lpmmioinfo->pchEndWrite > wm->info.pchBuffer + wm->info.cchBuffer) + return MMSYSERR_INVALPARAM; + wm->info = *lpmmioinfo; return MMSYSERR_NOERROR; }