Module: wine Branch: master Commit: d7edf3e651a2601d6086f49d3b2907e2321b8607 URL: https://gitlab.winehq.org/wine/wine/-/commit/d7edf3e651a2601d6086f49d3b2907e...
Author: Bernhard Übelacker bernhardu@mailbox.org Date: Fri Feb 9 21:45:37 2024 +0100
cmd: Handle lines with just spaces in bracket blocks.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51599
---
programs/cmd/tests/test_builtins.cmd | 26 ++++++++++++++++++++++++++ programs/cmd/tests/test_builtins.cmd.exp | 6 ++++++ programs/cmd/wcmdmain.c | 1 + 3 files changed, 33 insertions(+)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index 510a1ba5931..44dfd080b90 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -1029,6 +1029,32 @@ if not exist %windir% ( ) else ( echo windir does exist ) +if 1 == 0 ( + echo 1 == 0 should not be true +@space@ +) else echo block containing a line with just space seems to work +if 1 == 0 ( + echo 1 == 0 should not be true +@tab@ +) else echo block containing a line with just tab seems to work +if 1 == 0 ( + echo 1 == 0 should not be true +@space@@tab@ +) else echo block containing a line with just space and tab seems to work +if 1 == 0 ( + echo 1 == 0 should not be true +@tab@@space@ +) else echo block containing a line with just tab and space seems to work +if 1 == 0 ( + echo 1 == 0 should not be true +@space@ +@space@ +) else echo block containing two lines with just space seems to work +if 1 == 0 ( + echo 1 == 0 should not be true +@tab@ +@tab@ +) else echo block containing two lines with just tab seems to work echo --- case sensitivity with and without /i option if bar==BAR echo if does not default to case sensitivity if not bar==BAR echo if seems to default to case sensitivity diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 0f48a823109..fc1f9991df4 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -707,6 +707,12 @@ comparison operators surrounded by brackets seem to work comparison operators surrounded by brackets seem to work windir is defined windir does exist +block containing a line with just space seems to work +block containing a line with just tab seems to work +block containing a line with just space and tab seems to work +block containing a line with just tab and space seems to work +block containing two lines with just space seems to work +block containing two lines with just tab seems to work --- case sensitivity with and without /i option if seems to default to case sensitivity if /i seems to work diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 843fef8ea50..09cfeae1a01 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -2326,6 +2326,7 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_LIST **output, HANDLE } else break; }
+ extraData = WCMD_skip_leading_spaces(extraData); } while (*extraData == 0x00); curPos = extraSpace;