wineesd.drv: Initialize the stream name before using it!
Francois Gouget
fgouget at codeweavers.com
Tue Jun 16 12:15:21 CDT 2009
---
dlls/wineesd.drv/audio.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/wineesd.drv/audio.c b/dlls/wineesd.drv/audio.c
index 9c1eaa9..3a3bce5 100644
--- a/dlls/wineesd.drv/audio.c
+++ b/dlls/wineesd.drv/audio.c
@@ -1174,11 +1174,15 @@ static DWORD wodOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
out_rate = (int) wwo->waveFormat.Format.nSamplesPerSec;
TRACE("esd output format = 0x%08x, rate = %d\n", out_format, out_rate);
+ wwo->stream_name = get_stream_name("out", wDevID);
wwo->stream_fd = esd_play_stream(out_format, out_rate, NULL, wwo->stream_name);
TRACE("wwo->stream_fd=%d\n", wwo->stream_fd);
- if(wwo->stream_fd < 0) return MMSYSERR_ALLOCATED;
+ if(wwo->stream_fd < 0)
+ {
+ HeapFree(GetProcessHeap(), 0, wwo->stream_name);
+ return MMSYSERR_ALLOCATED;
+ }
- wwo->stream_name = get_stream_name("out", wDevID);
wwo->stream_id = 0;
wwo->dwPlayedTotal = 0;
wwo->dwWrittenTotal = 0;
@@ -1900,14 +1904,18 @@ static DWORD widOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
in_rate = (int) wwi->waveFormat.Format.nSamplesPerSec;
TRACE("esd input format = 0x%08x, rate = %d\n", in_format, in_rate);
+ wwi->stream_name = get_stream_name("in", wDevID);
#ifdef WID_USE_ESDMON
wwi->stream_fd = esd_monitor_stream(in_format, in_rate, NULL, wwi->stream_name);
#else
wwi->stream_fd = esd_record_stream(in_format, in_rate, NULL, wwi->stream_name);
#endif
TRACE("wwi->stream_fd=%d\n",wwi->stream_fd);
- if(wwi->stream_fd < 0) return MMSYSERR_ALLOCATED;
- wwi->stream_name = get_stream_name("in", wDevID);
+ if(wwi->stream_fd < 0)
+ {
+ HeapFree(GetProcessHeap(), 0, wwi->stream_name);
+ return MMSYSERR_ALLOCATED;
+ }
wwi->state = WINE_WS_STOPPED;
if (wwi->lpQueuePtr) {
--
1.6.3.1
More information about the wine-patches
mailing list