Module: wine Branch: master Commit: 53f7a5999204d42a154d13b1feab3e9cd89ba776 URL: https://gitlab.winehq.org/wine/wine/-/commit/53f7a5999204d42a154d13b1feab3e9...
Author: Eric Pouech epouech@codeweavers.com Date: Tue Jun 18 09:54:28 2024 +0200
cmd: Fix delay expansion in FOR /L loops.
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
programs/cmd/tests/test_builtins.cmd | 5 ----- programs/cmd/tests/test_builtins.cmd.exp | 22 +++++++++++----------- programs/cmd/wcmdmain.c | 1 + 3 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index 2ef2d495a63..c9951a66373 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -757,11 +757,6 @@ setlocal EnableDelayedExpansion set WINE_FOO=foo bar for %%i in ("!WINE_FOO!") do echo %%i for %%i in (!WINE_FOO!) do echo %%i -rem tests disabled for now... wine's cmd loops endlessly here -rem set WINE_FOO=4 4 4 -rem for /l %%i in (!WINE_FOO!) do echo %%i -rem set WINE_FOO=4 -rem for /l %%i in (1 2 !WINE_FOO!) do echo %%i setlocal DisableDelayedExpansion
echo --- in digit variables diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 1c3b0dc81cc..b5989b55f52 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -1018,17 +1018,17 @@ B D @todo_wine@inner argument {-x, y} --- nesting and delayed expansion a 1 2 -@todo_wine@1-A2 -@todo_wine@1-B1 -@todo_wine@2-A1 -@todo_wine@2-B2 -@todo_wine@b 1 3 -@todo_wine@1-A2 -@todo_wine@1-B1 -@todo_wine@2-A2 -@todo_wine@2-B2 -@todo_wine@3-A1 -@todo_wine@3-B2 +1-A2 +1-B1 +2-A1 +2-B2 +b 1 3 +1-A2 +1-B1 +2-A2 +2-B2 +3-A1 +3-B2 --- nesting if/for @todo_wine@"f" @todo_wine@"g" diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index e86ad8042f9..b50c159414e 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -2879,6 +2879,7 @@ static CMD_NODE *for_control_execute_numbers(CMD_FOR_CONTROL *for_ctrl, CMD_NODE int i;
wcscpy(set, for_ctrl->set); + handleExpansion(set, context != NULL, delayedsubst);
/* Note: native doesn't check the actual number of parameters, and set * them by default to 0.