[PATCH 5/10] cmd: Fix a FOR parsing bug when multiple spaces follow an IN (resent) (try 2)

Frédéric Delanoy frederic.delanoy at gmail.com
Fri Aug 19 18:58:57 CDT 2011


---
 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 at X Y
 @todo_wine at X Y
-- 
1.7.6




More information about the wine-patches mailing list