mciwave: Fix a leak when Open fails (valgrind).
This commit is contained in:
parent
ea27fd99e9
commit
90da8b749e
|
@ -465,7 +465,7 @@ static LRESULT WAVE_mciOpenFile(WINE_MCIWAVE* wmw, LPCWSTR filename)
|
||||||
fn = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(filename) + 1) * sizeof(WCHAR));
|
fn = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(filename) + 1) * sizeof(WCHAR));
|
||||||
if (!fn) return MCIERR_OUT_OF_MEMORY;
|
if (!fn) return MCIERR_OUT_OF_MEMORY;
|
||||||
strcpyW(fn, filename);
|
strcpyW(fn, filename);
|
||||||
HeapFree(GetProcessHeap(), 0, (void*)wmw->lpFileName);
|
HeapFree(GetProcessHeap(), 0, wmw->lpFileName);
|
||||||
wmw->lpFileName = fn;
|
wmw->lpFileName = fn;
|
||||||
|
|
||||||
if (strlenW(filename) > 0) {
|
if (strlenW(filename) > 0) {
|
||||||
|
@ -568,6 +568,8 @@ static LRESULT WAVE_mciOpen(MCIDEVICEID wDevID, DWORD dwFlags, LPMCI_WAVE_OPEN_P
|
||||||
if (wmw->hFile != 0)
|
if (wmw->hFile != 0)
|
||||||
mmioClose(wmw->hFile, 0);
|
mmioClose(wmw->hFile, 0);
|
||||||
wmw->hFile = 0;
|
wmw->hFile = 0;
|
||||||
|
HeapFree(GetProcessHeap(), 0, wmw->lpFileName);
|
||||||
|
wmw->lpFileName = NULL;
|
||||||
}
|
}
|
||||||
return dwRet;
|
return dwRet;
|
||||||
}
|
}
|
||||||
|
@ -680,7 +682,7 @@ static DWORD WAVE_mciClose(MCIDEVICEID wDevID, DWORD dwFlags, LPMCI_GENERIC_PARM
|
||||||
if (wmw->lpWaveFormat != &wmw->wfxRef)
|
if (wmw->lpWaveFormat != &wmw->wfxRef)
|
||||||
HeapFree(GetProcessHeap(), 0, wmw->lpWaveFormat);
|
HeapFree(GetProcessHeap(), 0, wmw->lpWaveFormat);
|
||||||
wmw->lpWaveFormat = &wmw->wfxRef;
|
wmw->lpWaveFormat = &wmw->wfxRef;
|
||||||
HeapFree(GetProcessHeap(), 0, (void*)wmw->lpFileName);
|
HeapFree(GetProcessHeap(), 0, wmw->lpFileName);
|
||||||
wmw->lpFileName = NULL;
|
wmw->lpFileName = NULL;
|
||||||
|
|
||||||
if ((dwFlags & MCI_NOTIFY) && lpParms) {
|
if ((dwFlags & MCI_NOTIFY) && lpParms) {
|
||||||
|
@ -1025,7 +1027,7 @@ static DWORD WAVE_mciRecord(MCIDEVICEID wDevID, DWORD_PTR dwFlags, DWORD_PTR pmt
|
||||||
* we don't modify the wave part of an existing file (ie. we always erase an
|
* we don't modify the wave part of an existing file (ie. we always erase an
|
||||||
* existing content, we don't overwrite)
|
* existing content, we don't overwrite)
|
||||||
*/
|
*/
|
||||||
HeapFree(GetProcessHeap(), 0, (void*)wmw->lpFileName);
|
HeapFree(GetProcessHeap(), 0, wmw->lpFileName);
|
||||||
dwRet = create_tmp_file(&wmw->hFile, (WCHAR**)&wmw->lpFileName);
|
dwRet = create_tmp_file(&wmw->hFile, (WCHAR**)&wmw->lpFileName);
|
||||||
if (dwRet != 0) return dwRet;
|
if (dwRet != 0) return dwRet;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue