[PATCH 0/2] MR3655: cmd: fixed var substring in 'enableDelayedExpansion' mode
Fixed the following code: ```plaintext for %i in ... set result=%%i if "!result:~0,3!"=="10." ... ``` Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55402 -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3655
From: Dmitry Sokolov <mr.dmitry.sokolov(a)gmail.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55402 --- programs/cmd/tests/test_builtins.cmd | 11 +++++++++++ programs/cmd/tests/test_builtins.cmd.exp | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index 0cb05041fa9..28b935ad521 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -1275,6 +1275,17 @@ set x=C:\Program Files (x86) if ""=="" set y=%x%\dummy echo %y% +echo --- Testing if + var subst in delayed expansion mode +setlocal enableDelayedExpansion +for %%i in (abc 10.0 11.0) do ( + set result=%%i + echo [DEBUG] checking {!result!} + if "!result:~0,3!"=="10." ( + echo SDKVER=!result! + ) +) +endlocal + echo ------------ Testing for ------------ echo --- plain FOR for %%i in (A B C) do echo %%i diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 16f9d647b8a..57e72a77387 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -927,6 +927,11 @@ x(a)space@ A ------------ Testing if/set ------------ C:\Program Files (x86)\dummy +--- Testing if + var subst in delayed expansion mode +[DEBUG] checking {abc} +[DEBUG] checking {10.0} +SDKVER=10.0 +[DEBUG] checking {11.0} ------------ Testing for ------------ --- plain FOR A -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3655
From: Dmitry Sokolov <mr.dmitry.sokolov(a)gmail.com> Fixed the following code: for %i in ... set result=%%i if "!result:~0,3!"=="10." ... Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55402 --- programs/cmd/wcmdmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 298606f6caa..f160bccb66e 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -596,7 +596,7 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR startchar) /* If there's complex substitution, just need %var% for now to get the expanded data to play with */ if (colonpos) { - *colonpos = startchar; + *colonpos = '%'; savedchar = *(colonpos+1); *(colonpos+1) = 0x00; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3655
participants (2)
-
Dmitry Sokolov -
Dmitry Sokolov (@DmitrySokolov)