[WINMM] check waveOutGetVolume parameter

Robert Reif reif at earthlink.net
Mon May 8 19:51:23 CDT 2006


Check waveOutGetVolume parameter with test.
-------------- next part --------------
Index: dlls/winmm/winmm.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winmm.c,v
retrieving revision 1.58
diff -p -u -r1.58 winmm.c
--- dlls/winmm/winmm.c	28 Nov 2005 11:01:05 -0000	1.58
+++ dlls/winmm/winmm.c	9 May 2006 00:48:20 -0000
@@ -2425,7 +2425,12 @@ UINT WINAPI waveOutGetVolume(HWAVEOUT hW
 
     TRACE("(%p, %08lx);\n", hWaveOut, (DWORD)lpdw);
 
-     if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, TRUE)) == NULL)
+    if (lpdw == NULL) {
+        WARN("invalid parameter\n");
+        return MMSYSERR_INVALPARAM;
+    }
+
+    if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, TRUE)) == NULL)
         return MMSYSERR_INVALHANDLE;
 
     return MMDRV_Message(wmld, WODM_GETVOLUME, (DWORD_PTR)lpdw, 0L, TRUE);
Index: dlls/winmm/tests/wave.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/tests/wave.c,v
retrieving revision 1.54
diff -p -u -r1.54 wave.c
--- dlls/winmm/tests/wave.c	8 May 2006 13:03:30 -0000	1.54
+++ dlls/winmm/tests/wave.c	9 May 2006 00:48:21 -0000
@@ -640,6 +640,9 @@ static void wave_out_test_deviceOut(int 
     frag.dwFlags=0;
     frag.dwLoops=0;
 
+    rc=waveOutGetVolume(wout,0);
+    ok(rc==MMSYSERR_INVALPARAM,"waveOutGetVolume(%s,0) expected "
+       "MMSYSERR_INVALPARAM, got %s\n", dev_name(device),wave_out_error(rc));
     rc=waveOutGetVolume(wout,&volume);
     ok(has_volume ? rc==MMSYSERR_NOERROR : rc==MMSYSERR_NOTSUPPORTED,
        "waveOutGetVolume(%s): rc=%s\n",dev_name(device),wave_out_error(rc));


More information about the wine-patches mailing list