diff --git a/win32ss/user/user32/misc/exticon.c b/win32ss/user/user32/misc/exticon.c index d3e18b08915..ba2bd6d6b2c 100644 --- a/win32ss/user/user32/misc/exticon.c +++ b/win32ss/user/user32/misc/exticon.c @@ -469,17 +469,20 @@ static UINT ICO_ExtractIconExW( icon = CreateIconFromResourceEx(imageData, entry->icHeader.biSizeImage, sig == 1, 0x00030000, cx[index], cy[index], flags); + HeapFree(GetProcessHeap(), 0, cursorData); + if (icon) { - RetPtr[index] = icon; - iconCount = 1; - } + if (RetPtr) + RetPtr[index] = icon; + else + DestroyIcon(icon); - if(cursorData != NULL) - HeapFree(GetProcessHeap(), 0, cursorData); + iconCount = 1; + break; + } } } - } ret = iconCount; /* return number of retrieved icons */ }