[SHELL32]
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 6 Nov 2016 22:25:02 +0000 (22:25 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 6 Nov 2016 22:25:02 +0000 (22:25 +0000)
- SHOpenFolderAndSelectItems: Take into account buggy applications like firefox that like to pass full pidls in a PCUITEMID_CHILD_ARRAY.

svn path=/trunk/; revision=73160

reactos/dll/win32/shell32/shlfolder.cpp

index 44ba710..59b4e05 100644 (file)
@@ -528,9 +528,21 @@ SHOpenFolderAndSelectItems(LPITEMIDLIST pidlFolder,
     ERR("SHOpenFolderAndSelectItems() is hackplemented\n");
     PCIDLIST_ABSOLUTE pidlItem;
     if (cidl)
     ERR("SHOpenFolderAndSelectItems() is hackplemented\n");
     PCIDLIST_ABSOLUTE pidlItem;
     if (cidl)
-        pidlItem = ILCombine(pidlFolder, apidl[0]);
+    {
+        /* Firefox sends a full pidl here dispite the fact it is a PCUITEMID_CHILD_ARRAY -_- */
+        if (ILGetNext(apidl[0]) != NULL)
+        {
+            pidlItem = apidl[0];
+        }
+        else
+        {
+            pidlItem = ILCombine(pidlFolder, apidl[0]);
+        }
+    }
     else
     else
+    {
         pidlItem = pidlFolder;
         pidlItem = pidlFolder;
+    }
 
     CComPtr<IShellFolder> psfDesktop;
 
 
     CComPtr<IShellFolder> psfDesktop;