[PATCH] winmm: return error in waveOutMessage if either dwParam1 or dwParam2 is null
Andrew Eikum
aeikum at codeweavers.com
Tue Apr 24 07:44:18 CDT 2018
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Tue, Apr 24, 2018 at 11:52:18AM +0200, Louis Lenders wrote:
> This is for bug https://bugs.winehq.org/show_bug.cgi?id=44953
> (The first test shows what Premiere passes in to waveOutMessage)
> After this it runs into same issue with waveInMessage, i`ll send a seperate patch for that issue
>
> Signed-off-by: Louis Lenders <xerox.xerox2000x at gmail.com>
> ---
> dlls/winmm/tests/wave.c | 10 ++++++++++
> dlls/winmm/waveform.c | 20 ++++++++++----------
> 2 files changed, 20 insertions(+), 10 deletions(-)
>
> diff --git a/dlls/winmm/tests/wave.c b/dlls/winmm/tests/wave.c
> index 2a12752..8d7dfd6 100644
> --- a/dlls/winmm/tests/wave.c
> +++ b/dlls/winmm/tests/wave.c
> @@ -1440,6 +1440,16 @@ static void wave_out_tests(void)
> ok((ndev == 0 && (preferred == -1 || broken(preferred != -1))) ||
> preferred < ndev, "Got invalid preferred device: 0x%x\n", preferred);
>
> + rc = waveOutMessage((HWAVEOUT)WAVE_MAPPER, DRVM_MAPPER_PREFERRED_GET,
> + (DWORD_PTR)-1 , 0);
> + ok(rc == MMSYSERR_INVALPARAM || rc == MMSYSERR_BADDEVICEID, /* w2008+wvista */
> + "waveOutMessage(DRVM_MAPPER_PREFERRED_GET) failed: %u\n", rc);
> +
> + rc = waveOutMessage((HWAVEOUT)WAVE_MAPPER, DRVM_MAPPER_PREFERRED_GET,
> + 0, (DWORD_PTR)&status);
> + ok(rc == MMSYSERR_INVALPARAM || rc == MMSYSERR_BADDEVICEID, /* w2008+wvista */
> + "waveOutMessage(DRVM_MAPPER_PREFERRED_GET) failed: %u\n", rc);
> +
> rc=waveOutGetDevCapsA(ndev+1,&capsA,sizeof(capsA));
> ok(rc==MMSYSERR_BADDEVICEID,
> "waveOutGetDevCapsA(%s): MMSYSERR_BADDEVICEID expected, got %s\n",
> diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c
> index 7308519..26fed17 100644
> --- a/dlls/winmm/waveform.c
> +++ b/dlls/winmm/waveform.c
> @@ -3262,17 +3262,17 @@ UINT WINAPI waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage,
> case DRV_QUERYMAPPABLE:
> return MMSYSERR_NOERROR;
> case DRVM_MAPPER_PREFERRED_GET:
> - if(dwParam1) {
> - if(g_outmmdevices_count > 0)
> - /* Device 0 is always the default device */
> - *(DWORD *)dwParam1 = 0;
> - else
> - *(DWORD *)dwParam1 = -1;
> - }
> + if(!dwParam1 || !dwParam2)
> + return MMSYSERR_INVALPARAM;
>
> - if(dwParam2)
> - /* Status flags */
> - *(DWORD *)dwParam2 = 0;
> + if(g_outmmdevices_count > 0)
> + /* Device 0 is always the default device */
> + *(DWORD *)dwParam1 = 0;
> + else
> + *(DWORD *)dwParam1 = -1;
> +
> + /* Status flags */
> + *(DWORD *)dwParam2 = 0;
>
> return MMSYSERR_NOERROR;
> }
> --
> 2.7.4
>
>
>
More information about the wine-devel
mailing list