Module: wine Branch: master Commit: f95b85a856d06c93b316aca40a1481b4af6e814e URL: https://source.winehq.org/git/wine.git/?a=commit;h=f95b85a856d06c93b316aca40...
Author: Bernhard Übelacker bernhardu@mailbox.org Date: Fri Apr 27 17:57:42 2018 +0800
cmd: Avoid having first parameter to start.exe ignored.
Signed-off-by: Bernhard Übelacker bernhardu@mailbox.org Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/cmd/builtins.c | 15 ++++++++------- programs/cmd/tests/test_builtins.cmd | 4 ++++ programs/cmd/tests/test_builtins.cmd.exp | 2 ++ 3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index ec66cd5..04b098e 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -4322,7 +4322,7 @@ void WCMD_start(WCHAR *args) int argno; int have_title; WCHAR file[MAX_PATH]; - WCHAR *cmdline; + WCHAR *cmdline, *cmdline_params; STARTUPINFOW st; PROCESS_INFORMATION pi;
@@ -4331,6 +4331,7 @@ void WCMD_start(WCHAR *args) cmdline = heap_alloc( (strlenW(file) + strlenW(args) + 8) * sizeof(WCHAR) ); strcpyW( cmdline, file ); strcatW( cmdline, spaceW ); + cmdline_params = cmdline + strlenW(cmdline);
/* The start built-in has some special command-line parsing properties * which will be outlined here. @@ -4382,17 +4383,17 @@ void WCMD_start(WCHAR *args) have_title = TRUE;
/* Copy all of the cmdline processed */ - memcpy(cmdline, args, sizeof(WCHAR) * (argN - args)); - cmdline[argN - args] = '\0'; + memcpy(cmdline_params, args, sizeof(WCHAR) * (argN - args)); + cmdline_params[argN - args] = '\0';
/* Add quoted title */ - strcatW(cmdline, prefixQuote); - strcatW(cmdline, thisArg); - strcatW(cmdline, postfixQuote); + strcatW(cmdline_params, prefixQuote); + strcatW(cmdline_params, thisArg); + strcatW(cmdline_params, postfixQuote);
/* Concatenate remaining command-line */ thisArg = WCMD_parameter_with_delims(args, argno, &argN, TRUE, FALSE, startDelims); - strcatW(cmdline, argN + strlenW(thisArg)); + strcatW(cmdline_params, argN + strlenW(thisArg));
break; } diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index f684628..63ec3ca 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -2988,6 +2988,10 @@ path set path=%WINE_backup_path% set WINE_backup_path=
+echo ------------ Testing start /W ------------ +echo start /W failed to wait>foobar.txt +start /W "" cmd /C "ping -n1 & echo start /W seems to really wait>foobar.txt"& type foobar.txt& del foobar.txt + echo ------------ Testing combined CALLs/GOTOs ------------ echo @echo off>foo.cmd echo goto :eof>>foot.cmd diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 4663c86..dcc9629 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -1574,6 +1574,8 @@ Correctly ignored trailing information PATH=original PATH=try2 PATH=try3 +------------ Testing start /W ------------ +start /W seems to really wait ------------ Testing combined CALLs/GOTOs ------------ world cheball