Module: wine Branch: master Commit: 8f282944347c4f8628e412992c61a1f831d213c0 URL: https://gitlab.winehq.org/wine/wine/-/commit/8f282944347c4f8628e412992c61a1f...
Author: Alex Henrie alexhenrie24@gmail.com Date: Wed Sep 6 22:56:59 2023 -0600
cmd: Reset ignoreBracket when moving to the next line.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55528
---
programs/cmd/tests/test_builtins.cmd | 12 ++++++++++++ programs/cmd/tests/test_builtins.cmd.exp | 2 ++ programs/cmd/wcmdmain.c | 1 + 3 files changed, 15 insertions(+)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index 08595933622..510a1ba5931 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -1276,9 +1276,21 @@ if ""=="" for %%i in (A) DO (echo %%i) if not ""=="" for %%i in (B) DO (echo %%i)
echo ------------ Testing if/set ------------ +rem a left parenthesis is part of the value, not the start of an 'if' block set x=C:\Program Files (x86) if ""=="" set y=%x%\dummy echo %y% +if 1 == 1 set z= ( +echo '%z%' +rem 'set' in one-line 'if' statement does not interfere with other 'if' blocks +setlocal enableDelayedExpansion +if 1 == 1 ( + if 1 == 1 set z=zeta + if 1 == 1 ( + echo !z! + ) +) +endlocal
echo --- Testing if + var subst in delayed expansion mode setlocal enableDelayedExpansion diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 85e734b048a..0f48a823109 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -928,6 +928,8 @@ x@space@ A ------------ Testing if/set ------------ C:\Program Files (x86)\dummy +' (' +zeta --- Testing if + var subst in delayed expansion mode [DEBUG] checking {abc} [DEBUG] checking {10.0} diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index cc81534fff3..843fef8ea50 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -2302,6 +2302,7 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_LIST **output, HANDLE
WINE_TRACE("Need to read more data as outstanding brackets or carets\n"); inOneLine = FALSE; + ignoreBracket = FALSE; prevDelim = CMD_NONE; inQuotes = 0; memset(extraSpace, 0x00, (MAXSTRING+1) * sizeof(WCHAR));