From: Eric Pouech <epouech(a)codeweavers.com> Signed-off-by: Eric Pouech <epouech(a)codeweavers.com> --- programs/cmd/tests/test_builtins.cmd.exp | 6 +++--- programs/cmd/wcmdmain.c | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index d6a4acb3cc8..35ef48a70fe 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -702,9 +702,9 @@ FAILURE 457 FAILURE 459 FAILURE 460 FAILURE 461 -(a)todo_wine@FAILURE 267 -(a)todo_wine@FAILURE 1 -(a)todo_wine@FAILURE 1 +FAILURE 267 +FAILURE 1 +FAILURE 1 --------- success/failure when invoking cmd /k -------------- a @todo_wine(a)ERRORLEVEL 0 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index fbec86a481a..5b029b6a1ed 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -4491,23 +4491,22 @@ int __cdecl wmain (int argc, WCHAR *argvW[]) } if (opt_c) { + RETURN_CODE return_code = NO_ERROR; /* If we do a "cmd /c command", we don't want to allocate a new * console since the command returns immediately. Rather, we use * the currently allocated input and output handles. This allows * us to pipe to and read from the command interpreter. */ - /* Parse the command string, without reading any more input */ rpl_status = WCMD_ReadAndParseLine(cmd, &toExecute); if (rpl_status == RPL_SUCCESS && toExecute) { - node_execute(toExecute); + return_code = node_execute(toExecute); node_dispose_tree(toExecute); } else if (rpl_status == RPL_SYNTAXERROR) - errorlevel = RETURN_CODE_SYNTAX_ERROR; - - return errorlevel; + return_code = ERROR_INVALID_FUNCTION; + return return_code; } GetStartupInfoW(&startupInfo); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8655