Akihiro Sagawa : winmm: Update lBufOffset after seeking file directly.

Alexandre Julliard julliard at winehq.org
Mon Jun 16 12:37:50 CDT 2014


Module: wine
Branch: master
Commit: 71b8a56c8413e570ecd382dab3da6b4f8a597d6b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=71b8a56c8413e570ecd382dab3da6b4f8a597d6b

Author: Akihiro Sagawa <sagawa.aki at 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 */




More information about the wine-cvs mailing list