Commit 524e316a authored by Huw Davies's avatar Huw Davies Committed by Alexandre Julliard

shell32: Avoid leaking icon handles.

parent c7c8d24b
...@@ -305,10 +305,12 @@ static INT SIC_IconAppend (LPCWSTR sSourceFile, INT dwSourceIndex, HICON hSmallI ...@@ -305,10 +305,12 @@ static INT SIC_IconAppend (LPCWSTR sSourceFile, INT dwSourceIndex, HICON hSmallI
* gets small/big icon by number from a file * gets small/big icon by number from a file
*/ */
static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags)
{ HICON hiconLarge=0; {
HICON hiconLarge=0;
HICON hiconSmall=0; HICON hiconSmall=0;
HICON hiconLargeShortcut; HICON hiconLargeShortcut;
HICON hiconSmallShortcut; HICON hiconSmallShortcut;
int ret;
PrivateExtractIconsW( sSourceFile, dwSourceIndex, GetSystemMetrics(SM_CXICON), PrivateExtractIconsW( sSourceFile, dwSourceIndex, GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON), &hiconLarge, 0, 1, 0 ); GetSystemMetrics(SM_CYICON), &hiconLarge, 0, 1, 0 );
...@@ -327,6 +329,8 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) ...@@ -327,6 +329,8 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags)
hiconSmallShortcut = SIC_OverlayShortcutImage(hiconSmall, FALSE); hiconSmallShortcut = SIC_OverlayShortcutImage(hiconSmall, FALSE);
if (NULL != hiconLargeShortcut && NULL != hiconSmallShortcut) if (NULL != hiconLargeShortcut && NULL != hiconSmallShortcut)
{ {
DestroyIcon( hiconLarge );
DestroyIcon( hiconSmall );
hiconLarge = hiconLargeShortcut; hiconLarge = hiconLargeShortcut;
hiconSmall = hiconSmallShortcut; hiconSmall = hiconSmallShortcut;
} }
...@@ -339,8 +343,12 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) ...@@ -339,8 +343,12 @@ static INT SIC_LoadIcon (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags)
} }
} }
return SIC_IconAppend (sSourceFile, dwSourceIndex, hiconSmall, hiconLarge, dwFlags); ret = SIC_IconAppend( sSourceFile, dwSourceIndex, hiconSmall, hiconLarge, dwFlags );
DestroyIcon( hiconLarge );
DestroyIcon( hiconSmall );
return ret;
} }
/***************************************************************************** /*****************************************************************************
* SIC_Initialize [internal] * SIC_Initialize [internal]
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment