From 2452cd53d09c3c4861f8bd75469b3fa604dbb2dd Mon Sep 17 00:00:00 2001 From: Jose Carlos Jesus Date: Wed, 18 Jan 2023 23:43:28 +0000 Subject: [PATCH] Fixed --- dll/win32/shell32/debughlp.cpp | 1 + dll/win32/shell32/wine/pidl.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/dll/win32/shell32/debughlp.cpp b/dll/win32/shell32/debughlp.cpp index 6778418c7a8..33673f8ee3b 100644 --- a/dll/win32/shell32/debughlp.cpp +++ b/dll/win32/shell32/debughlp.cpp @@ -379,6 +379,7 @@ BOOL pcheck( LPCITEMIDLIST pidl ) case PT_YAGUID: case PT_IESPECIAL2: case PT_SHARE: + case 0x99: break; default: ERR("unknown IDLIST %p [%p] size=%u type=%x\n", diff --git a/dll/win32/shell32/wine/pidl.c b/dll/win32/shell32/wine/pidl.c index 2ee8c4650fc..f6df26b3765 100644 --- a/dll/win32/shell32/wine/pidl.c +++ b/dll/win32/shell32/wine/pidl.c @@ -520,6 +520,19 @@ BOOL _ILHACKCompareSimpleIds(LPCITEMIDLIST pidltemp1, LPCITEMIDLIST pidltemp2) if (!_ILIsDrive(pidltemp1) || !_ILIsDrive(pidltemp2) || pdata1->u.drive.szDriveName[0] != pdata2->u.drive.szDriveName[0]) return FALSE; } + else if ((pidltemp1->mkid.abID[0] == 0x99) || (pidltemp2->mkid.abID[0] == 0x99)) + { + if (!(pidltemp1->mkid.abID[0] == 0x99) || !(pidltemp2->mkid.abID[0] == 0x99)) + { + size_t len = min(pidltemp1->mkid.cb, pidltemp2->mkid.cb); + + if (memcmp((CHAR*)pidltemp1, (CHAR*)pidltemp2, len)) + { + return FALSE; + } + return (pidltemp1->mkid.cb == pidltemp2->mkid.cb); + } + } else { return FALSE; @@ -674,6 +687,7 @@ PUIDLIST_RELATIVE WINAPI ILFindChild(PIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE p ret = NULL; /* elements of pidl1 left*/ } TRACE_(shell)("--- %p\n", ret); + return (PUIDLIST_RELATIVE)ret; /* pidl 1 is shorter */ } -- 2.36.1.windows.1