Module: wine Branch: master Commit: 7144849d0b08f99d5ed245e9c801c367f8258e99 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7144849d0b08f99d5ed245e9c8...
Author: Maarten Lankhorst m.b.lankhorst@gmail.com Date: Tue Sep 4 22:58:23 2007 +0200
dsound: Fix null pointer dereference for waveout in creating buffer.
---
dlls/dsound/buffer.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c index 1a99927..5d95078 100644 --- a/dlls/dsound/buffer.c +++ b/dlls/dsound/buffer.c @@ -1023,13 +1023,16 @@ HRESULT IDirectSoundBufferImpl_Create(
use_hw = !!(dsbd->dwFlags & DSBCAPS_LOCHARDWARE); TRACE("use_hw = %d, capf = 0x%08x, device->drvcaps.dwFlags = 0x%08x\n", use_hw, capf, device->drvcaps.dwFlags); - if (use_hw && (device->drvcaps.dwFlags & capf) != capf) + if (use_hw && ((device->drvcaps.dwFlags & capf) != capf || !device->driver)) { - WARN("Format not supported for hardware buffer\n"); + if (device->driver) + WARN("Format not supported for hardware buffer\n"); HeapFree(GetProcessHeap(),0,dsb->pwfx); HeapFree(GetProcessHeap(),0,dsb); *pdsb = NULL; - return DSERR_BADFORMAT; + if ((device->drvcaps.dwFlags & capf) != capf) + return DSERR_BADFORMAT; + return DSERR_GENERIC; }
/* FIXME: check hardware sample rate mixing capabilities */