ChangeSet ID: 16846 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@wine.codeweavers.com 2005/03/25 04:27:00 Modified files: dlls/comctl32 : toolbar.c Log message: Dimitrie O. Paun Fix a memory leak in toolbar. Avoid casts. Patch: http://cvs.winehq.org/patch.py?id=16846 Old revision New revision Changes Path 1.209 1.210 +18 -8 wine/dlls/comctl32/toolbar.c Index: wine/dlls/comctl32/toolbar.c diff -u -p wine/dlls/comctl32/toolbar.c:1.209 wine/dlls/comctl32/toolbar.c:1.210 --- wine/dlls/comctl32/toolbar.c:1.209 Thu May 23 09:16:49 2013 +++ wine/dlls/comctl32/toolbar.c Thu May 23 09:16:49 2013 @@ -4527,23 +4527,33 @@ TOOLBAR_SaveRestoreW (HWND hwnd, WPARAM static LRESULT TOOLBAR_SaveRestoreA (HWND hwnd, WPARAM wParam, LPTBSAVEPARAMSA lpSave) { + LPWSTR pszValueName = 0, pszSubKey = 0; TBSAVEPARAMSW SaveW; + LRESULT result = 0; int len; if (lpSave == NULL) return 0; - SaveW.hkr = lpSave->hkr; - len = MultiByteToWideChar(CP_ACP, 0, lpSave->pszSubKey, -1, NULL, 0); - SaveW.pszSubKey = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, lpSave->pszSubKey, -1, (LPWSTR)SaveW.pszSubKey, len); + pszSubKey = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (pszSubKey) goto exit; + MultiByteToWideChar(CP_ACP, 0, lpSave->pszSubKey, -1, pszSubKey, len); len = MultiByteToWideChar(CP_ACP, 0, lpSave->pszValueName, -1, NULL, 0); - SaveW.pszValueName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, lpSave->pszValueName, -1, (LPWSTR)SaveW.pszValueName, len); + pszValueName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!pszValueName) goto exit; + MultiByteToWideChar(CP_ACP, 0, lpSave->pszValueName, -1, pszValueName, len); + + SaveW.pszValueName = pszValueName; + SaveW.pszSubKey = pszSubKey; + SaveW.hkr = lpSave->hkr; + result = TOOLBAR_SaveRestoreW(hwnd, wParam, &SaveW); + +exit: + HeapFree(GetProcessHeap(), 0, pszValueName); + HeapFree(GetProcessHeap(), 0, pszSubKey); - /* FIXME: shoudn't we free the HeapAlloc()ed memory? */ - return TOOLBAR_SaveRestoreW(hwnd, wParam, &SaveW); + return result; }