From 303af43ff5ded3c148c7e10ab7d9b0cd18de4bdf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Delanoy?= Date: Sat, 20 Aug 2011 01:58:57 +0200 Subject: [PATCH] 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 deletion(-) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 8bb84f68a6..e738626a6f 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 a83e568637..ffbc81469f 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 7ebe57a076..2954e166bc 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 -- 2.32.0.93.g670b81a890