From: Louis Lenders xerox.xerox2000x@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=56940 --- dlls/shell32/shlexec.c | 6 ++++++ dlls/shell32/tests/shlexec.c | 9 +++++++++ 2 files changed, 15 insertions(+)
diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c index 828c7168a34..c640bb42846 100644 --- a/dlls/shell32/shlexec.c +++ b/dlls/shell32/shlexec.c @@ -1655,6 +1655,12 @@ static BOOL SHELL_execute( LPSHELLEXECUTEINFOW sei, SHELL_ExecuteW32 execfunc )
sei->hProcess = NULL;
+ /* remove trailing spaces */ + if (sei_tmp.lpFile) + { + WCHAR *end = (WCHAR *)sei_tmp.lpFile + wcslen( sei_tmp.lpFile ) - 1; + while (end >= sei_tmp.lpFile && *end == ' ') *end-- = 0; + } /* make copies of all path/command strings */ if (!sei_tmp.lpFile) { diff --git a/dlls/shell32/tests/shlexec.c b/dlls/shell32/tests/shlexec.c index bd32ece8705..9579e18a531 100644 --- a/dlls/shell32/tests/shlexec.c +++ b/dlls/shell32/tests/shlexec.c @@ -1166,6 +1166,15 @@ static void test_lpFile_parsed(void) NULL, ""%TMPDIR%\simple.shlexec"", NULL, NULL, NULL); okShell(rc > 32 || broken(rc == SE_ERR_FNF) /* Win95/NT4 */, "failed: rc=%Iu\n", rc); + /* test lpfile + trailing space */ + rc=shell_execute_ex(SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI, + NULL, "%TMPDIR%\simple.shlexec ", NULL, NULL, NULL); + okShell(rc > 32, "failed: rc=%Iu\n", rc); + /* test lpfile + leading space */ + rc=shell_execute_ex(SEE_MASK_DOENVSUBST | SEE_MASK_FLAG_NO_UI, + NULL, " %TMPDIR%\simple.shlexec", NULL, NULL, NULL); + okShell(rc == SE_ERR_FNF, "failed: rc=%Iu\n", rc); + }
typedef struct