Module: wine
Branch: master
Commit: 303af43ff5ded3c148c7e10ab7d9b0cd18de4bdf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=303af43ff5ded3c148c7e10ab…
Author: Frédéric Delanoy <frederic.delanoy(a)gmail.com>
Date: Sat Aug 20 01:58:57 2011 +0200
cmd: Fix a FOR parsing bug when multiple spaces follow an IN.
---
programs/cmd/builtins.c | 4 +++-
programs/cmd/tests/test_builtins.cmd | 1 +
programs/cmd/tests/test_builtins.cmd.exp | 1 +
3 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 8bb84f6..e738626 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -976,7 +976,9 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) {
while (*curPos && *curPos==' ') curPos++;
/* Ensure line continues with IN */
- if (!*curPos || lstrcmpiW (curPos, inW)) {
+ if (!*curPos
+ || CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE | SORT_STRINGSORT,
+ curPos, 3, inW, -1) != CSTR_EQUAL) {
WCMD_output (WCMD_LoadMessage(WCMD_SYNTAXERR));
return;
}
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index a83e568..ffbc814 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -318,6 +318,7 @@ for %%i in (A B C) do echo %%j
for %%i in (A B C) do call :forTestFun1 %%i
for %%i in (1,4,1) do echo %%i
for %%i in (A, B,C) do echo %%i
+for %%i in (X) do echo %%i
goto :endForTestFun1
:forTestFun1
echo %1
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 7ebe57a..2954e16 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -223,6 +223,7 @@ C
A
B
C
+X
...imbricated FORs
@todo_wine@X Y
@todo_wine@X Y