Akihiro Sagawa : winmm: Fix SEEK_END handling for memory files.

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


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

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

winmm: Fix SEEK_END handling for memory files.

---

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

diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c
index ec282c2..c61c99c 100644
--- a/dlls/winmm/mmio.c
+++ b/dlls/winmm/mmio.c
@@ -896,7 +896,7 @@ LONG WINAPI mmioSeek(HMMIO hmmio, LONG lOffset, INT iOrigin)
     /* some memory mapped buffers are defined with -1 as a size */
     if ((wm->info.cchBuffer > 0) &&
 	((offset < wm->info.lBufOffset) ||
-	 (offset >= wm->info.lBufOffset + wm->info.cchBuffer) ||
+	 (offset > wm->info.lBufOffset + wm->info.cchBuffer) ||
 	 (offset > wm->dwFileSize && wm->info.fccIOProc != FOURCC_MEM) ||
 	 !wm->bBufferLoaded)) {
 
diff --git a/dlls/winmm/tests/mmio.c b/dlls/winmm/tests/mmio.c
index be91b41..5e440b8 100644
--- a/dlls/winmm/tests/mmio.c
+++ b/dlls/winmm/tests/mmio.c
@@ -695,7 +695,16 @@ static void test_mmioSeek(void)
     if (hmmio != NULL) {
         /* seek to the end */
         end = mmioSeek(hmmio, 0, SEEK_END);
-        todo_wine ok(end == size, "expected %d, got %d\n", size, end);
+        ok(end == size, "expected %d, got %d\n", size, end);
+
+        /* test MMIOINFO values */
+        res = mmioGetInfo(hmmio, &mmio, 0);
+        ok(res == MMSYSERR_NOERROR, "expected 0, got %d\n", res);
+        ok(mmio.pchNext == mmio.pchBuffer + mmio.cchBuffer, "expected %p + %d, got %p\n", mmio.pchBuffer, mmio.cchBuffer, mmio.pchNext);
+        ok(mmio.pchEndRead == mmio.pchBuffer + mmio.cchBuffer, "expected %p + %d, got %p\n", mmio.pchBuffer, mmio.cchBuffer, mmio.pchEndRead);
+        ok(mmio.pchEndWrite == mmio.pchBuffer + mmio.cchBuffer, "expected %p + %d, got %p\n", mmio.pchBuffer, mmio.cchBuffer, mmio.pchEndWrite);
+        ok(mmio.lBufOffset == 0, "expected %d, got %d\n", 0, mmio.lBufOffset);
+        ok(mmio.lDiskOffset == 0, "expected %d, got %d\n", 0, mmio.lDiskOffset);
 
         /* seek backward from the end */
         pos = mmioSeek(hmmio, offset, SEEK_END);




More information about the wine-cvs mailing list