Fixed first seek on MEM mmio files.

diff --git a/dlls/winmm/mmio.c b/dlls/winmm/mmio.c
index d8d9c71..d7cb715 100644
--- a/dlls/winmm/mmio.c
+++ b/dlls/winmm/mmio.c
@@ -10,7 +10,6 @@
 /* Still to be done:
  * 	+ correct handling of global/local IOProcs
  *	+ mode of mmio objects is not used (read vs write vs readwrite)
- *	+ IO buffering is limited to 64k
  *	+ optimization of internal buffers (seg / lin)
  *	+ even in 32 bit only, a seg ptr IO buffer is allocated (after this is 
  *	  fixed, we'll have a proper 32/16 separation)
@@ -614,20 +613,18 @@
  */
 static	LRESULT	MMIO_Flush(WINE_MMIO* wm, UINT uFlags)
 {
-    if ((!wm->info.cchBuffer) || (wm->info.fccIOProc == FOURCC_MEM)) {
-	return 0;
+    if (wm->info.cchBuffer && (wm->info.fccIOProc != FOURCC_MEM)) {
+	/* not quite sure what to do here, but I'll guess */
+	if (wm->info.dwFlags & MMIO_DIRTY) {
+	    MMIO_SendMessage(wm, MMIOM_SEEK, wm->info.lDiskOffset,
+			     SEEK_SET, MMIO_PROC_32A);
+	    MMIO_SendMessage(wm, MMIOM_WRITE, (LPARAM)wm->info.pchBuffer,
+			     wm->info.pchNext - wm->info.pchBuffer, MMIO_PROC_32A);
+	}
+	if (uFlags & MMIO_EMPTYBUF)
+	    wm->info.pchNext = wm->info.pchBuffer;
     }
-
-    /* not quite sure what to do here, but I'll guess */
-    if (wm->info.dwFlags & MMIO_DIRTY) {
-	MMIO_SendMessage(wm, MMIOM_SEEK, wm->info.lDiskOffset,
-			 SEEK_SET, MMIO_PROC_32A);
-	MMIO_SendMessage(wm, MMIOM_WRITE, (LPARAM)wm->info.pchBuffer,
-			 wm->info.pchNext - wm->info.pchBuffer, MMIO_PROC_32A);
-	wm->info.dwFlags &= ~MMIO_DIRTY;
-    }
-    if (uFlags & MMIO_EMPTYBUF)
-        wm->info.pchNext = wm->info.pchBuffer;
+    wm->info.dwFlags &= ~MMIO_DIRTY;
 
     return 0;
 }
@@ -667,10 +664,8 @@
     TRACE("(%p %p %ld %u %d)\n", wm, pchBuffer, cchBuffer, uFlags, bFrom32);
 
     if (uFlags)			return MMSYSERR_INVALPARAM;
-    if (cchBuffer > 0xFFFF) {
-	FIXME("Not handling huge mmio buffers yet (%ld >= 64k)\n", cchBuffer);
-	return MMSYSERR_INVALPARAM;
-    }
+    if (cchBuffer > 0xFFFF)
+	WARN("Untested handling of huge mmio buffers (%ld >= 64k)\n", cchBuffer);
 	
     if (MMIO_Flush(wm, MMIO_EMPTYBUF) != 0)
 	return MMIOERR_CANNOTWRITE;
@@ -790,6 +785,7 @@
 					      type != MMIO_PROC_16);
 	if (refmminfo->wErrorRet != MMSYSERR_NOERROR)
 	    goto error1;
+	wm->bBufferLoaded = TRUE;
     } /* else => unbuffered, wm->info.pchBuffer == NULL */
     
     /* see mmioDosIOProc for that one */
diff --git a/dlls/winmm/wineoss/audio.c b/dlls/winmm/wineoss/audio.c
index 27d052e..cc5f952 100644
--- a/dlls/winmm/wineoss/audio.c
+++ b/dlls/winmm/wineoss/audio.c
@@ -1417,7 +1417,7 @@
 static HRESULT WINAPI IDsDriverImpl_Open(PIDSDRIVER iface)
 {
     ICOM_THIS(IDsDriverImpl,iface);
-    int enable;
+    int enable = 0;
 
     TRACE("(%p)\n",iface);
     /* make sure the card doesn't start playing before we want it to */
@@ -1557,10 +1557,6 @@
  *                  Low level WAVE IN implemantation			*
  *======================================================================*/
 
-/*======================================================================*
- *                  Low level WAVE IN implemantation			*
- *======================================================================*/
-
 /**************************************************************************
  * 			widGetDevCaps				[internal]
  */