ExtractAssociatedIconA needs to allocate enough space to have EAIW
fill in lpIconPathW.
This commit is contained in:
parent
0d307eb040
commit
96ebd31066
|
@ -640,7 +640,12 @@ HICON WINAPI ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lp
|
|||
{
|
||||
HICON hIcon = NULL;
|
||||
INT len = MultiByteToWideChar(CP_ACP, 0, lpIconPath, -1, NULL, 0);
|
||||
LPWSTR lpIconPathW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||
/* Note that we need to allocate MAX_PATH, since we are supposed to fill
|
||||
* the correct executable if there is no icon in lpIconPath directly.
|
||||
* lpIconPath itself is supposed to be large enough, so make sure lpIconPathW
|
||||
* is large enough too. Yes, I am puking too.
|
||||
*/
|
||||
LPWSTR lpIconPathW = HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR));
|
||||
|
||||
TRACE("%p %s %p\n", hInst, debugstr_a(lpIconPath), lpiIcon);
|
||||
|
||||
|
@ -648,6 +653,7 @@ HICON WINAPI ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lp
|
|||
{
|
||||
MultiByteToWideChar(CP_ACP, 0, lpIconPath, -1, lpIconPathW, len);
|
||||
hIcon = ExtractAssociatedIconW(hInst, lpIconPathW, lpiIcon);
|
||||
WideCharToMultiByte(CP_ACP, 0, lpIconPathW, -1, lpIconPath, MAX_PATH , NULL, NULL);
|
||||
HeapFree(GetProcessHeap(), 0, lpIconPathW);
|
||||
}
|
||||
return hIcon;
|
||||
|
|
Loading…
Reference in New Issue