[PATCH v2 3/3] shell32: Reimplement SHBindToParent.

Mohamad Al-Jaf mohamadaljaf at gmail.com
Sat Jun 11 23:13:37 CDT 2022


Signed-off-by: Mohamad Al-Jaf <mohamadaljaf at gmail.com>
---
 dlls/shell32/pidl.c | 38 +-------------------------------------
 1 file changed, 1 insertion(+), 37 deletions(-)

diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c
index e659427f9cd..59968b066e4 100644
--- a/dlls/shell32/pidl.c
+++ b/dlls/shell32/pidl.c
@@ -1339,43 +1339,7 @@ HRESULT WINAPI SHBindToFolderIDListParent(IShellFolder *psf, LPCITEMIDLIST pidl,
  */
 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
 {
-    IShellFolder    * psfDesktop;
-    HRESULT         hr=E_FAIL;
-
-    TRACE_(shell)("pidl=%p\n", pidl);
-    pdump(pidl);
-    
-    if (!pidl || !ppv)
-        return E_INVALIDARG;
-    
-    *ppv = NULL;
-    if (ppidlLast)
-        *ppidlLast = NULL;
-
-    hr = SHGetDesktopFolder(&psfDesktop);
-    if (FAILED(hr))
-        return hr;
-
-    if (_ILIsPidlSimple(pidl))
-    {
-        /* we are on desktop level */
-        hr = IShellFolder_QueryInterface(psfDesktop, riid, ppv);
-    }
-    else
-    {
-        LPITEMIDLIST pidlParent = ILClone(pidl);
-        ILRemoveLastID(pidlParent);
-        hr = IShellFolder_BindToObject(psfDesktop, pidlParent, NULL, riid, ppv);
-        SHFree (pidlParent);
-    }
-
-    IShellFolder_Release(psfDesktop);
-
-    if (SUCCEEDED(hr) && ppidlLast)
-        *ppidlLast = ILFindLastID(pidl);
-
-    TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08lx\n", *ppv, (ppidlLast)?*ppidlLast:NULL, hr);
-    return hr;
+    return SHBindToFolderIDListParent(NULL, pidl, riid, ppv, ppidlLast);
 }
 
 HRESULT WINAPI SHBindToObject(IShellFolder *psf, LPCITEMIDLIST pidl, IBindCtx *pbc, REFIID riid, void **ppv)
-- 
2.36.1




More information about the wine-devel mailing list