[SHELL32]

- according to msdn ppidl should be set to NULL if an error occurs
- fixes shlfolder winetest crash

svn path=/trunk/; revision=46112
This commit is contained in:
Kamil Hornicek 2010-03-11 19:42:59 +00:00
parent a17ba7f9af
commit 3666415400

View file

@ -2244,12 +2244,21 @@ LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
HRESULT hr=E_FAIL; HRESULT hr=E_FAIL;
ULONG dwAttr=sfgaoIn; ULONG dwAttr=sfgaoIn;
if (!pszName || !ppidl || !psfgaoOut) if(!ppidl)
return E_INVALIDARG; return E_INVALIDARG;
if (!pszName || !psfgaoOut)
{
*ppidl = NULL;
return E_INVALIDARG;
}
hr = SHGetDesktopFolder(&psfDesktop); hr = SHGetDesktopFolder(&psfDesktop);
if (FAILED(hr)) if (FAILED(hr))
{
*ppidl = NULL;
return hr; return hr;
}
hr = IShellFolder_ParseDisplayName(psfDesktop, (HWND)NULL, pbc, (LPOLESTR)pszName, (ULONG *)NULL, ppidl, &dwAttr); hr = IShellFolder_ParseDisplayName(psfDesktop, (HWND)NULL, pbc, (LPOLESTR)pszName, (ULONG *)NULL, ppidl, &dwAttr);
@ -2257,6 +2266,8 @@ LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
*psfgaoOut = dwAttr; *psfgaoOut = dwAttr;
else
*ppidl = NULL;
return hr; return hr;
} }