Module: wine Branch: master Commit: cba322d71d317bc52e9de5a057723bf5d6dc1e86 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cba322d71d317bc52e9de5a057...
Author: Andrew Eikum aeikum@codeweavers.com Date: Mon Dec 15 10:21:52 2014 -0600
winmm: Allow larger MMTIME sizes.
---
dlls/winmm/tests/wave.c | 7 ++++++- dlls/winmm/waveform.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/dlls/winmm/tests/wave.c b/dlls/winmm/tests/wave.c index d370461..4dcc577 100644 --- a/dlls/winmm/tests/wave.c +++ b/dlls/winmm/tests/wave.c @@ -487,7 +487,12 @@ static void check_position(int device, HWAVEOUT wout, DWORD bytes, DWORD returned;
mmtime.wType = TIME_BYTES; - rc=waveOutGetPosition(wout, &mmtime, sizeof(mmtime)); + rc=waveOutGetPosition(wout, &mmtime, sizeof(mmtime) - 1); + ok(rc==MMSYSERR_ERROR, + "waveOutGetPosition(%s): rc=%s\n",dev_name(device),wave_out_error(rc)); + + mmtime.wType = TIME_BYTES; + rc=waveOutGetPosition(wout, &mmtime, sizeof(mmtime) + 1); ok(rc==MMSYSERR_NOERROR, "waveOutGetPosition(%s): rc=%s\n",dev_name(device),wave_out_error(rc)); if (mmtime.wType != TIME_BYTES && winetest_debug > 1) diff --git a/dlls/winmm/waveform.c b/dlls/winmm/waveform.c index 32083b8..f381c16 100644 --- a/dlls/winmm/waveform.c +++ b/dlls/winmm/waveform.c @@ -2981,9 +2981,12 @@ UINT WINAPI waveOutGetPosition(HWAVEOUT hWaveOut, LPMMTIME lpTime, { TRACE("(%p, %p, %u)\n", hWaveOut, lpTime, uSize);
- if(!uSize || !lpTime || uSize != sizeof(MMTIME)) + if(!uSize || !lpTime) return MMSYSERR_INVALPARAM;
+ if(uSize < sizeof(MMTIME)) + return MMSYSERR_ERROR; + return WINMM_GetPosition((HWAVE)hWaveOut, lpTime); }
@@ -3602,9 +3605,12 @@ UINT WINAPI waveInGetPosition(HWAVEIN hWaveIn, LPMMTIME lpTime, { TRACE("(%p, %p, %u)\n", hWaveIn, lpTime, uSize);
- if(!uSize || !lpTime || uSize != sizeof(MMTIME)) + if(!uSize || !lpTime) return MMSYSERR_INVALPARAM;
+ if(uSize < sizeof(MMTIME)) + return MMSYSERR_ERROR; + return WINMM_GetPosition((HWAVE)hWaveIn, lpTime); }