Module: wine Branch: master Commit: f98077591f7d18f60c4ec6685027b987c75c1724 URL: https://gitlab.winehq.org/wine/wine/-/commit/f98077591f7d18f60c4ec6685027b98...
Author: Eric Pouech epouech@codeweavers.com Date: Tue Jun 18 10:11:13 2024 +0200
cmd: Fix delayed expansion in FOR loop on file sets.
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
programs/cmd/tests/test_builtins.cmd.exp | 4 ++-- programs/cmd/wcmdmain.c | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 84637ce41e3..1564e6c4611 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -610,8 +610,8 @@ N '' '.eh'@or_broken@'' "foo bar" -@todo_wine@foo -@todo_wine@bar +foo +bar --- in digit variables a %1 %2 b %1 %2 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index ec71e760348..f2030d7e985 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -3255,6 +3255,7 @@ static CMD_NODE *for_control_execute_set(CMD_FOR_CONTROL *for_ctrl, const WCHAR len = 0;
wcscpy(set, for_ctrl->set); + handleExpansion(set, context != NULL, delayedsubst); for (i = 0; ; i++) { WCHAR *element = WCMD_parameter(set, i, NULL, TRUE, FALSE); @@ -3314,7 +3315,11 @@ static CMD_NODE *for_control_execute_walk_files(CMD_FOR_CONTROL *for_ctrl, CMD_N
if (for_ctrl->root_dir) { - dirs_to_walk = WCMD_dir_stack_create(for_ctrl->root_dir, NULL); + WCHAR buffer[MAXSTRING]; + + wcscpy(buffer, for_ctrl->root_dir); + handleExpansion(buffer, context != NULL, delayedsubst); + dirs_to_walk = WCMD_dir_stack_create(buffer, NULL); } else dirs_to_walk = WCMD_dir_stack_create(NULL, NULL); ref_len = wcslen(dirs_to_walk->dirName);