Michael Karcher : dsound: Fix double free in dsound capture.
Alexandre Julliard
julliard at winehq.org
Fri May 30 05:41:55 CDT 2008
Module: wine
Branch: master
Commit: 84fd6e629a05a87cf788cff8bf009fbc94a269e9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=84fd6e629a05a87cf788cff8bf009fbc94a269e9
Author: Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>
Date: Fri May 30 09:34:45 2008 +0200
dsound: Fix double free in dsound capture.
---
dlls/dsound/capture.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c
index f445b4f..c9444a4 100644
--- a/dlls/dsound/capture.c
+++ b/dlls/dsound/capture.c
@@ -860,6 +860,12 @@ IDirectSoundCaptureBufferImpl_Release( LPDIRECTSOUNDCAPTUREBUFFER8 iface )
if (This->notify)
IDirectSoundNotify_Release((LPDIRECTSOUNDNOTIFY)This->notify);
+ /* If driver manages its own buffer, IDsCaptureDriverBuffer_Release
+ should have freed the buffer. Prevent freeing it again in
+ IDirectSoundCaptureBufferImpl_Create */
+ if (!(This->device->drvdesc.dwFlags & DSDDESC_USESYSTEMMEMORY))
+ This->device->buffer = NULL;
+
HeapFree(GetProcessHeap(), 0, This->notifies);
HeapFree( GetProcessHeap(), 0, This );
TRACE("(%p) released\n", This);
More information about the wine-cvs
mailing list