[SHELL32]
authorKamil Hornicek <kamil.hornicek@reactos.org>
Thu, 11 Mar 2010 19:42:59 +0000 (19:42 +0000)
committerKamil Hornicek <kamil.hornicek@reactos.org>
Thu, 11 Mar 2010 19:42:59 +0000 (19:42 +0000)
- according to msdn ppidl should be set to NULL if an error occurs
- fixes shlfolder winetest crash

svn path=/trunk/; revision=46112

reactos/dll/win32/shell32/shellord.c

index 05adda5..ff9025c 100644 (file)
@@ -2244,12 +2244,21 @@ LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
     HRESULT         hr=E_FAIL;
     ULONG           dwAttr=sfgaoIn;
 
-    if (!pszName || !ppidl || !psfgaoOut)
+    if(!ppidl)
         return E_INVALIDARG;
 
+    if (!pszName || !psfgaoOut)
+    {
+        *ppidl = NULL;
+        return E_INVALIDARG;
+    }
+
     hr = SHGetDesktopFolder(&psfDesktop);
     if (FAILED(hr))
+    {
+        *ppidl = NULL;
         return hr;
+    }
 
     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))
         *psfgaoOut = dwAttr;
+    else
+        *ppidl = NULL;
 
     return hr;
 }