Fixed the following code:
```plaintext for %i in ... set result=%%i if "!result:~0,3!"=="10." ... ```
From: Dmitry Sokolov mr.dmitry.sokolov@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@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
From: Dmitry Sokolov mr.dmitry.sokolov@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; }