Module: wine Branch: master Commit: 42f9a8ef79aa8d793bd6ec8667dafc2cfa37cba5 URL: https://gitlab.winehq.org/wine/wine/-/commit/42f9a8ef79aa8d793bd6ec8667dafc2...
Author: Brendan Shanks bshanks@codeweavers.com Date: Wed Aug 24 15:26:03 2022 -0700
shell32: Return NULL from ExtractIcon() for all error cases.
---
dlls/shell32/shell32_main.c | 11 ++++------- dlls/shell32/tests/shelllink.c | 7 ------- 2 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c index 212de7445a4..2aac022f9e4 100644 --- a/dlls/shell32/shell32_main.c +++ b/dlls/shell32/shell32_main.c @@ -606,16 +606,13 @@ HICON WINAPI ExtractIconW(HINSTANCE hInstance, LPCWSTR lpszFile, UINT nIconIndex ret = PrivateExtractIconsW(lpszFile, 0, cx, cy, NULL, NULL, 0, LR_DEFAULTCOLOR); if (ret != (UINT)-1 && ret) return (HICON)(UINT_PTR)ret; - return NULL; } else + { ret = PrivateExtractIconsW(lpszFile, nIconIndex, cx, cy, &hIcon, NULL, 1, LR_DEFAULTCOLOR); - - if (ret == (UINT)-1) - return (HICON)1; - else if (ret > 0 && hIcon) - return hIcon; - + if (ret > 0 && hIcon) + return hIcon; + } return NULL; }
diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c index 13dce3302c7..345484d9a5d 100644 --- a/dlls/shell32/tests/shelllink.c +++ b/dlls/shell32/tests/shelllink.c @@ -1185,7 +1185,6 @@ static void test_ExtractIcon(void)
/* specified instance handle */ hicon = ExtractIconA(GetModuleHandleA("shell32.dll"), NULL, 0); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon); hicon2 = ExtractIconA(GetModuleHandleA("shell32.dll"), "shell32.dll", -1); ok(hicon2 != NULL, "Got icon %p\n", hicon2); @@ -1211,14 +1210,12 @@ static void test_ExtractIcon(void) CloseHandle(file);
hicon = ExtractIconA(NULL, path, 0); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon);
hicon = ExtractIconA(NULL, path, -1); ok(hicon == NULL, "Got icon %p\n", hicon);
hicon = ExtractIconA(NULL, path, 1); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon);
r = DeleteFileA(path); @@ -1229,7 +1226,6 @@ static void test_ExtractIcon(void) ok(hicon == NULL, "Got icon %p\n", hicon);
hicon = ExtractIconA(NULL, "", 0); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon);
/* same for W variant */ @@ -1267,14 +1263,12 @@ if (0) CloseHandle(file);
hicon = ExtractIconW(NULL, pathW, 0); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon);
hicon = ExtractIconW(NULL, pathW, -1); ok(hicon == NULL, "Got icon %p\n", hicon);
hicon = ExtractIconW(NULL, pathW, 1); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon);
r = DeleteFileW(pathW); @@ -1285,7 +1279,6 @@ if (0) ok(hicon == NULL, "Got icon %p\n", hicon);
hicon = ExtractIconW(NULL, emptyW, 0); - todo_wine ok(hicon == NULL, "Got icon %p\n", hicon); }