cmd: Set errorlevel to 0 when 'call' is invoked with an empty string.

Previously, invoking 'call' with an empty string would leave errorlevel
unchanged. Reset errorlevel to 0 to match the behavior of
the Windows 'cmd.exe'.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49982
Signed-off-by: Aaron Hill <aa1ronham@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Aaron Hill 2020-10-12 17:36:05 -04:00 committed by Alexandre Julliard
parent 8a70e7eba1
commit 8e54cad6a1
2 changed files with 8 additions and 0 deletions

View File

@ -3149,6 +3149,9 @@ echo %ErrorLevel% should be 7
if errorlevel 7 echo setting var worked too well, bad
call :setError 3
echo %ErrorLevel% should still be 7
rem Verify that (call ) sets errorlevel to 0
(call )
if errorlevel 1 echo errorlevel should have been 0
echo ------------ Testing GOTO ------------
if a==a goto dest1

View File

@ -1053,6 +1053,11 @@ void WCMD_run_program (WCHAR *command, BOOL called)
firstParam = WCMD_parameter(command, 0, NULL, FALSE, TRUE);
if (!firstParam) return;
if (!firstParam[0]) {
errorlevel = 0;
return;
}
/* Calculate the search path and stem to search for */
if (wcspbrk (firstParam, delims) == NULL) { /* No explicit path given, search path */
static const WCHAR curDir[] = {'.',';','\0'};