Always initialize lpWaveHdr->lpNext to NULL.
Don't fail on strange fragment sizes.

diff --git a/dlls/winmm/wineoss/audio.c b/dlls/winmm/wineoss/audio.c
index c589cba..14506f1 100644
--- a/dlls/winmm/wineoss/audio.c
+++ b/dlls/winmm/wineoss/audio.c
@@ -1120,10 +1120,11 @@
     IOCTL(audio, SNDCTL_DSP_GETBLKSIZE, abuf_size);
     if (abuf_size < 1024 || abuf_size > 65536) {
 	if (abuf_size == -1)
-	    WARN("IOCTL can't 'SNDCTL_DSP_GETBLKSIZE' !\n");
-	else
-	    WARN("SNDCTL_DSP_GETBLKSIZE Invalid dwFragmentSize !\n");
-	return MMSYSERR_NOTENABLED;
+        {
+            WARN("IOCTL can't 'SNDCTL_DSP_GETBLKSIZE' !\n");
+            return MMSYSERR_NOTENABLED;
+        }
+        WARN("SNDCTL_DSP_GETBLKSIZE Invalid dwFragmentSize %d!\n",abuf_size);
     }
     WInDev[wDevID].wFlags = HIWORD(dwFlags & CALLBACK_TYPEMASK);
 
@@ -1214,6 +1215,7 @@
     lpWaveHdr->dwFlags |= WHDR_INQUEUE;
     lpWaveHdr->dwFlags &= ~WHDR_DONE;
     lpWaveHdr->dwBytesRecorded = 0;
+    lpWaveHdr->lpNext = NULL;
     if (WInDev[wDevID].lpQueueHdr == NULL) {
 	WInDev[wDevID].lpQueueHdr = lpWaveHdr;
     } else {
@@ -1223,7 +1225,6 @@
 	    count++;
 	}
 	lpWIHdr->lpNext = lpWaveHdr;
-	lpWaveHdr->lpNext = NULL;
 	count++;
     }
     TRACE("buffer added ! (now %u in queue)\n", count);