From b52146d95fcf3d761632814955d0967d0ec3790e Mon Sep 17 00:00:00 2001 From: Michael Jung Date: Sat, 14 Jan 2006 17:10:53 +0100 Subject: [PATCH] unixfs: Fix ParseDisplayName. Build an absolute pidl to query attributes in UnixFolder::ParseDisplayName. --- dlls/shell32/shfldr_unixfs.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c index e5aee56fb64..7ffdb9acd04 100644 --- a/dlls/shell32/shfldr_unixfs.c +++ b/dlls/shell32/shfldr_unixfs.c @@ -905,12 +905,18 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_ParseDisplayName(IShellFolder2* i { IShellFolder *pParentSF; LPCITEMIDLIST pidlLast; + LPITEMIDLIST pidlComplete = ILCombine(This->m_pidlLocation, *ppidl); HRESULT hr; - hr = SHBindToParent(*ppidl, &IID_IShellFolder, (LPVOID*)&pParentSF, &pidlLast); - if (FAILED(hr)) return E_FAIL; + hr = SHBindToParent(pidlComplete, &IID_IShellFolder, (LPVOID*)&pParentSF, &pidlLast); + if (FAILED(hr)) { + FIXME("SHBindToParent failed! hr = %08lx\n", hr); + ILFree(pidlComplete); + return E_FAIL; + } IShellFolder_GetAttributesOf(pParentSF, 1, &pidlLast, pdwAttributes); IShellFolder_Release(pParentSF); + ILFree(pidlComplete); } if (!result) TRACE("FAILED!\n"); @@ -1272,7 +1278,7 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_SetNameOf(IShellFolder2* iface, H } else { - int len = MultiByteToWideChar(CP_UNIXCP, 0, szDest, -1, NULL, 0); + int len = MultiByteToWideChar(CP_UNIXCP, 0, szDest, -1, NULL, 0); pwszDosDest = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); MultiByteToWideChar(CP_UNIXCP, 0, szDest, -1, pwszDosDest, len);