=?UTF-8?Q?Bernhard=20=C3=9Cbelacker=20?=: cmd: Avoid having first parameter to start.exe ignored.
Alexandre Julliard
julliard at winehq.org
Thu Sep 13 03:49:13 CDT 2018
Module: wine
Branch: stable
Commit: b5815d148f36ca4ef1a2222ac254195c78107afa
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b5815d148f36ca4ef1a2222ac254195c78107afa
Author: Bernhard Übelacker <bernhardu at 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 at mailbox.org>
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit f95b85a856d06c93b316aca40a1481b4af6e814e)
Signed-off-by: Michael Stefaniuc <mstefani at 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
More information about the wine-cvs
mailing list