mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 02:24:46 +00:00
winmm: Fix a memory leak in mciSendStringW (valgrind).
This commit is contained in:
parent
d90d2ab558
commit
c3a362a4c4
|
@ -1316,7 +1316,7 @@ static DWORD MCI_HandleReturnValues(DWORD dwRet, LPWINE_MCIDRIVER wmd, DWORD ret
|
||||||
DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
||||||
UINT uRetLen, HWND hwndCallback)
|
UINT uRetLen, HWND hwndCallback)
|
||||||
{
|
{
|
||||||
LPWSTR verb, dev, args;
|
LPWSTR verb, dev, args, devType = NULL;
|
||||||
LPWINE_MCIDRIVER wmd = 0;
|
LPWINE_MCIDRIVER wmd = 0;
|
||||||
MCIDEVICEID uDevID, auto_open = 0;
|
MCIDEVICEID uDevID, auto_open = 0;
|
||||||
DWORD dwFlags = 0, dwRet = 0;
|
DWORD dwFlags = 0, dwRet = 0;
|
||||||
|
@ -1360,7 +1360,7 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
||||||
|
|
||||||
/* Determine devType from open */
|
/* Determine devType from open */
|
||||||
if (!strcmpW(verb, wszOpen)) {
|
if (!strcmpW(verb, wszOpen)) {
|
||||||
LPWSTR devType, tmp;
|
LPWSTR tmp;
|
||||||
WCHAR buf[128];
|
WCHAR buf[128];
|
||||||
|
|
||||||
/* case dev == 'new' has to be handled */
|
/* case dev == 'new' has to be handled */
|
||||||
|
@ -1426,7 +1426,6 @@ DWORD WINAPI mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrRet,
|
||||||
dwRet = MCI_LoadMciDriver(devType, &wmd);
|
dwRet = MCI_LoadMciDriver(devType, &wmd);
|
||||||
if (dwRet == MCIERR_DEVICE_NOT_INSTALLED)
|
if (dwRet == MCIERR_DEVICE_NOT_INSTALLED)
|
||||||
dwRet = MCIERR_INVALID_DEVICE_NAME;
|
dwRet = MCIERR_INVALID_DEVICE_NAME;
|
||||||
HeapFree(GetProcessHeap(), 0, devType);
|
|
||||||
if (dwRet)
|
if (dwRet)
|
||||||
goto errCleanUp;
|
goto errCleanUp;
|
||||||
} else if ((MCI_ALL_DEVICE_ID != uDevID) && !(wmd = MCI_GetDriver(mciGetDeviceIDW(dev)))
|
} else if ((MCI_ALL_DEVICE_ID != uDevID) && !(wmd = MCI_GetDriver(mciGetDeviceIDW(dev)))
|
||||||
|
@ -1596,6 +1595,7 @@ errCleanUp:
|
||||||
}
|
}
|
||||||
if (wMsg == MCI_OPEN && LOWORD(dwRet) && wmd)
|
if (wMsg == MCI_OPEN && LOWORD(dwRet) && wmd)
|
||||||
MCI_UnLoadMciDriver(wmd);
|
MCI_UnLoadMciDriver(wmd);
|
||||||
|
HeapFree(GetProcessHeap(), 0, devType);
|
||||||
HeapFree(GetProcessHeap(), 0, verb);
|
HeapFree(GetProcessHeap(), 0, verb);
|
||||||
return dwRet;
|
return dwRet;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue