Akihiro Sagawa : winmm: Avoid direct seeking for memory files.

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


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

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Mon Jun 16 22:48:24 2014 +0900

winmm: Avoid direct seeking for memory files.

---

 dlls/winmm/mmio.c       |    2 +-
 dlls/winmm/tests/mmio.c |   15 +++------------
 2 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c
index 8521b87..c0e9498 100644
--- a/dlls/winmm/mmio.c
+++ b/dlls/winmm/mmio.c
@@ -871,7 +871,7 @@ LONG WINAPI mmioSeek(HMMIO hmmio, LONG lOffset, INT iOrigin)
 	return MMSYSERR_INVALHANDLE;
 
     /* not buffered, direct seek on file */
-    if (!wm->info.pchBuffer)
+    if (!wm->info.pchBuffer && wm->info.fccIOProc != FOURCC_MEM)
 	return send_message(wm->ioProc, &wm->info, MMIOM_SEEK, lOffset, iOrigin, FALSE);
 
     switch (iOrigin) {
diff --git a/dlls/winmm/tests/mmio.c b/dlls/winmm/tests/mmio.c
index 71efc5d..e92700f 100644
--- a/dlls/winmm/tests/mmio.c
+++ b/dlls/winmm/tests/mmio.c
@@ -315,10 +315,7 @@ static void test_mmioOpen(char *fname)
     ok(mmio.lDiskOffset == 0, "expected 0, got %d\n", mmio.lDiskOffset);
 
     ret = mmioSeek(hmmio, 0, SEEK_CUR);
-    if (fname)
-        ok(ret == 0, "expected 0, got %d\n", ret);
-    else
-        todo_wine ok(ret == 0, "expected 0, got %d\n", ret);
+    ok(ret == 0, "expected 0, got %d\n", ret);
 
     mmioClose(hmmio, 0);
 
@@ -531,10 +528,7 @@ static void test_mmioSetBuffer(char *fname)
     ok(mmio.lDiskOffset == 0, "expected 0, got %d\n", mmio.lDiskOffset);
 
     ret = mmioSeek(hmmio, 0, SEEK_CUR);
-    if (fname)
-        ok(ret == 0, "expected 0, got %d\n", ret);
-    else
-        todo_wine ok(ret == 0, "expected 0, got %d\n", ret);
+    ok(ret == 0, "expected 0, got %d\n", ret);
 
     ret = mmioSetBuffer(hmmio, NULL, 0, MMIO_ALLOCBUF);
     ok(ret == MMSYSERR_NOERROR, "mmioSetBuffer error %u\n", ret);
@@ -554,10 +548,7 @@ static void test_mmioSetBuffer(char *fname)
     ok(mmio.lDiskOffset == 0, "expected 0, got %d\n", mmio.lDiskOffset);
 
     ret = mmioSeek(hmmio, 0, SEEK_CUR);
-    if (fname)
-        ok(ret == 0, "expected 0, got %d\n", ret);
-    else
-        todo_wine ok(ret == 0, "expected 0, got %d\n", ret);
+    ok(ret == 0, "expected 0, got %d\n", ret);
 
     ret = mmioSetBuffer(hmmio, buf, 0, MMIO_ALLOCBUF);
     ok(ret == MMSYSERR_NOERROR, "mmioSetBuffer error %u\n", ret);




More information about the wine-cvs mailing list