[SHELL32] Improve ShellExecute
authorJoachim Henze <Joachim.Henze@reactos.org>
Tue, 6 Aug 2019 18:24:55 +0000 (20:24 +0200)
committerJoachim Henze <Joachim.Henze@reactos.org>
Tue, 6 Aug 2019 18:24:55 +0000 (20:24 +0200)
This fixes regression CORE-6412 and also fixes CORE-12927
by bringing us a bit closer to Wine implementation.

Thanks to patches author Doug Lyons.
The removed code looks like historic workaround code.

Automated tests do improve as well
VBox https://reactos.org/testman/compare.php?ids=68662,68696
KVM https://reactos.org/testman/compare.php?ids=68663,68697

I intend to merge this back into 0.4.12RC.

dll/win32/shell32/shlexec.cpp

index b745d40..5a74146 100644 (file)
@@ -1993,34 +1993,6 @@ static BOOL SHELL_execute(LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc)
         }
         else
         {
-            /* If the executable name is not quoted, we have to use this search loop here,
-               that in CreateProcess() is not sufficient because it does not handle shell links. */
-            WCHAR buffer[MAX_PATH], xlpFile[MAX_PATH];
-            LPWSTR space, s;
-
-            LPWSTR beg = wszApplicationName/*sei_tmp.lpFile*/;
-            for(s = beg; (space = const_cast<LPWSTR>(strchrW(s, L' '))); s = space + 1)
-            {
-                int idx = space - sei_tmp.lpFile;
-                memcpy(buffer, sei_tmp.lpFile, idx * sizeof(WCHAR));
-                buffer[idx] = '\0';
-
-                /*FIXME This finds directory paths if the targeted file name contains spaces. */
-                if (SearchPathW(*sei_tmp.lpDirectory ? sei_tmp.lpDirectory : NULL, buffer, wszExe, sizeof(xlpFile) / sizeof(xlpFile[0]), xlpFile, NULL))
-                {
-                    /* separate out command from parameter string */
-                    LPCWSTR p = space + 1;
-
-                    while(isspaceW(*p))
-                        ++p;
-
-                    strcpyW(wszParameters, p);
-                    *space = L'\0';
-
-                    break;
-                }
-            }
-
             lpFile = sei_tmp.lpFile;
         }
     }