[PATCH 2/2] shell32: Fix regression preventing explorer to open control panel applets

Fabian Maurer dark.shadow4 at web.de
Sun Jan 16 12:11:16 CST 2022


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52394
Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
---
 dlls/shell32/shlfolder.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/shell32/shlfolder.c b/dlls/shell32/shlfolder.c
index 8e3b561cfd1..28d067075ca 100644
--- a/dlls/shell32/shlfolder.c
+++ b/dlls/shell32/shlfolder.c
@@ -381,6 +381,7 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder2 *psf, LPCITEMIDLIST pidl, LPDWO
 {
     DWORD dwAttributes;
     BOOL has_guid;
+    PIDLDATA* data;
     static const DWORD dwSupportedAttr=
                           SFGAO_CANCOPY |           /*0x00000001 */
                           SFGAO_CANMOVE |           /*0x00000002 */
@@ -406,6 +407,7 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder2 *psf, LPCITEMIDLIST pidl, LPDWO
     }

     has_guid = _ILGetGUIDPointer(pidl) != NULL;
+    data = _ILGetDataPointer (pidl);

     dwAttributes = *pdwAttributes;

@@ -414,10 +416,10 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder2 *psf, LPCITEMIDLIST pidl, LPDWO
 	    SFGAO_DROPTARGET|SFGAO_HASPROPSHEET|SFGAO_CANLINK;
     } else if (has_guid && _ILIsPidlSimple(pidl) && HCR_GetFolderAttributes(pidl, &dwAttributes)) {
 	*pdwAttributes = dwAttributes;
-    } else if (_ILGetDataPointer (pidl)) {
+    } else if (data) {
 	DWORD file_attr = _ILGetFileAttributes (pidl, NULL, 0);

-        if (!file_attr) {
+        if (!file_attr && data->type != PT_CPLAPPLET) {
 	    WCHAR path[MAX_PATH];
 	    STRRET strret;

--
2.34.1




More information about the wine-devel mailing list