From: Piotr Caban Subject: [PATCH 1/3] winmm: Write user data after headers in mmioAdvance so IDiskOffset is updated correctly Message-Id: <54E7477F.8090604@codeweavers.com> Date: Fri, 20 Feb 2015 15:41:03 +0100 --- dlls/winmm/mmio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c index f2a04cf..16532bf 100644 --- a/dlls/winmm/mmio.c +++ b/dlls/winmm/mmio.c @@ -1023,6 +1023,8 @@ MMRESULT WINAPI mmioAdvance(HMMIO hmmio, MMIOINFO* lpmmioinfo, UINT uFlags) if (uFlags != MMIO_READ && uFlags != MMIO_WRITE) return MMSYSERR_INVALPARAM; + if (MMIO_Flush(wm, 0) != MMSYSERR_NOERROR) + return MMIOERR_CANNOTWRITE; if (uFlags == MMIO_WRITE && (lpmmioinfo->dwFlags & MMIO_DIRTY)) { send_message(wm->ioProc, &wm->info, MMIOM_SEEK, lpmmioinfo->lBufOffset, SEEK_SET, FALSE); @@ -1030,8 +1032,6 @@ MMRESULT WINAPI mmioAdvance(HMMIO hmmio, MMIOINFO* lpmmioinfo, UINT uFlags) lpmmioinfo->pchNext - lpmmioinfo->pchBuffer, FALSE); lpmmioinfo->dwFlags &= ~MMIO_DIRTY; } - if (MMIO_Flush(wm, 0) != MMSYSERR_NOERROR) - return MMIOERR_CANNOTWRITE; if (lpmmioinfo && lpmmioinfo->fccIOProc == FOURCC_DOS) { wm->dwFileSize = max(wm->dwFileSize, lpmmioinfo->lBufOffset +