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

Fabian Maurer wine at gitlab.winehq.org
Tue May 3 20:05:37 CDT 2022


From: Fabian Maurer <dark.shadow4 at web.de>

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 01496714c6a..dcc62108c1e 100644
--- a/dlls/shell32/shlfolder.c
+++ b/dlls/shell32/shlfolder.c
@@ -384,6 +384,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 */
@@ -409,6 +410,7 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder2 *psf, LPCITEMIDLIST pidl, LPDWO
     }
 
     has_guid = _ILGetGUIDPointer(pidl) != NULL;
+    data = _ILGetDataPointer (pidl);
 
     dwAttributes = *pdwAttributes;
 
@@ -417,10 +419,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;
 
-- 
GitLab

https://gitlab.winehq.org/wine/wine/-/merge_requests/31



More information about the wine-devel mailing list