From: Eric Pouech epouech@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57147
Signed-off-by: Eric Pouech epouech@codeweavers.com --- programs/cmd/tests/test_builtins.cmd.exp | 2 +- programs/cmd/wcmdmain.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 9cbd248850b..a58a0254e16 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -1338,7 +1338,7 @@ d4 --- EXIT /B inside FOR loops 1 2 -@todo_wine@--- set /a +--- set /a ------ individual operations WINE_foo correctly 3 WINE_foo correctly -1 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 0c74011a029..be369686c00 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -3411,7 +3411,7 @@ static RETURN_CODE for_control_execute_from_FILE(CMD_FOR_CONTROL *for_ctrl, FILE RETURN_CODE return_code = NO_ERROR;
/* Read line by line until end of file */ - while (fgetws(buffer, ARRAY_SIZE(buffer), input)) + while (return_code != RETURN_CODE_ABORTED && fgetws(buffer, ARRAY_SIZE(buffer), input)) { size_t len;
@@ -3479,7 +3479,7 @@ static RETURN_CODE for_control_execute_fileset(CMD_FOR_CONTROL *for_ctrl, CMD_NO } else { - for (i = 0; ; i++) + for (i = 0; return_code != RETURN_CODE_ABORTED; i++) { WCHAR *element = WCMD_parameter(args, i, NULL, TRUE, FALSE); if (!element || !*element) break; @@ -3520,7 +3520,7 @@ static RETURN_CODE for_control_execute_set(CMD_FOR_CONTROL *for_ctrl, const WCHA
wcscpy(set, for_ctrl->set); handleExpansion(set, TRUE); - for (i = 0; ; i++) + for (i = 0; return_code != RETURN_CODE_ABORTED; i++) { WCHAR *element = WCMD_parameter(set, i, NULL, TRUE, FALSE); if (!element || !*element) break; @@ -3556,7 +3556,7 @@ static RETURN_CODE for_control_execute_set(CMD_FOR_CONTROL *for_ctrl, const WCHA wcscpy(&buffer[insert_pos], fd.cFileName); WCMD_set_for_loop_variable(for_ctrl->variable_index, buffer); return_code = node_execute(node); - } while (FindNextFileW(hff, &fd) != 0); + } while (return_code != RETURN_CODE_ABORTED && FindNextFileW(hff, &fd) != 0); FindClose(hff); } else @@ -3585,7 +3585,7 @@ static RETURN_CODE for_control_execute_walk_files(CMD_FOR_CONTROL *for_ctrl, CMD else dirs_to_walk = WCMD_dir_stack_create(NULL, NULL); ref_len = wcslen(dirs_to_walk->dirName);
- while (dirs_to_walk) + while (return_code != RETURN_CODE_ABORTED && dirs_to_walk) { TRACE("About to walk %p %ls for %s\n", dirs_to_walk, dirs_to_walk->dirName, debugstr_for_control(for_ctrl)); if (for_ctrl->flags & CMD_FOR_FLAG_TREE_RECURSE) @@ -3624,7 +3624,7 @@ static RETURN_CODE for_control_execute_numbers(CMD_FOR_CONTROL *for_ctrl, CMD_NO }
for (var = numbers[0]; - (numbers[1] < 0) ? var >= numbers[2] : var <= numbers[2]; + return_code != RETURN_CODE_ABORTED && ((numbers[1] < 0) ? var >= numbers[2] : var <= numbers[2]); var += numbers[1]) { WCHAR tmp[32];