Module: wine Branch: master Commit: 71b8a56c8413e570ecd382dab3da6b4f8a597d6b URL: http://source.winehq.org/git/wine.git/?a=commit;h=71b8a56c8413e570ecd382dab3...
Author: Akihiro Sagawa sagawa.aki@gmail.com Date: Mon Jun 16 22:48:26 2014 +0900
winmm: Update lBufOffset after seeking file directly.
---
dlls/winmm/mmio.c | 8 ++++++-- dlls/winmm/tests/mmio.c | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c index c0e9498..ec282c2 100644 --- a/dlls/winmm/mmio.c +++ b/dlls/winmm/mmio.c @@ -871,8 +871,12 @@ LONG WINAPI mmioSeek(HMMIO hmmio, LONG lOffset, INT iOrigin) return MMSYSERR_INVALHANDLE;
/* not buffered, direct seek on file */ - if (!wm->info.pchBuffer && wm->info.fccIOProc != FOURCC_MEM) - return send_message(wm->ioProc, &wm->info, MMIOM_SEEK, lOffset, iOrigin, FALSE); + if (!wm->info.pchBuffer && wm->info.fccIOProc != FOURCC_MEM) { + LRESULT ret = send_message(wm->ioProc, &wm->info, MMIOM_SEEK, lOffset, iOrigin, FALSE); + if (ret != -1) + wm->info.lBufOffset = wm->info.lDiskOffset; + return ret; + }
switch (iOrigin) { case SEEK_SET: diff --git a/dlls/winmm/tests/mmio.c b/dlls/winmm/tests/mmio.c index e92700f..be91b41 100644 --- a/dlls/winmm/tests/mmio.c +++ b/dlls/winmm/tests/mmio.c @@ -725,7 +725,7 @@ static void test_mmioSeek(void) ok(mmio.pchNext == mmio.pchBuffer, "expected %p, got %p\n", mmio.pchBuffer, mmio.pchNext); ok(mmio.pchEndRead == mmio.pchBuffer, "expected %p, got %p\n", mmio.pchBuffer, mmio.pchEndRead); ok(mmio.pchEndWrite == mmio.pchBuffer + mmio.cchBuffer, "expected %p + %d, got %p\n", mmio.pchBuffer, mmio.cchBuffer, mmio.pchEndWrite); - todo_wine ok(mmio.lBufOffset == size, "expected %d, got %d\n", size, mmio.lBufOffset); + ok(mmio.lBufOffset == size, "expected %d, got %d\n", size, mmio.lBufOffset); ok(mmio.lDiskOffset == size, "expected %d, got %d\n", size, mmio.lDiskOffset);
/* seek backward from the end */