From: Eric Pouech <epouech(a)codeweavers.com> Note: there are many other letters than can be used as variable names. Signed-off-by: Eric Pouech <epouech(a)codeweavers.com> --- programs/cmd/tests/test_builtins.cmd.exp | 4 ++-- programs/cmd/wcmd.h | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index e6e6e21cd17..1c3b0dc81cc 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -613,8 +613,8 @@ N @todo_wine(a)foo @todo_wine(a)bar --- in digit variables -(a)todo_wine@a %1 %2 -(a)todo_wine@b %1 %2 +a %1 %2 +b %1 %2 ------------ Testing parameter zero ------------ :func parm1 [:func] [@drive@] [@path@] [test] [.cmd] [@drive@@shortpath(a)test.cmd] diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h index 9d4f55bc414..dde5d1e12ec 100644 --- a/programs/cmd/wcmd.h +++ b/programs/cmd/wcmd.h @@ -266,12 +266,13 @@ typedef struct _DIRECTORY_STACK /* Data structure to for loop variables during for body execution, bearing in mind that for loops can be nested */ -#define MAX_FOR_VARIABLES 52 +#define MAX_FOR_VARIABLES (2*26+10) static inline int for_var_char_to_index(WCHAR c) { if (c >= L'a' && c <= L'z') return c - L'a'; if (c >= L'A' && c <= L'Z') return c - L'A' + 26; + if (c >= L'0' && c <= L'9') return c - L'0' + 2 * 26; return -1; } @@ -279,7 +280,8 @@ static inline WCHAR for_var_index_to_char(int var_idx) { if (var_idx < 0 || var_idx >= MAX_FOR_VARIABLES) return L'?'; if (var_idx < 26) return L'a' + var_idx; - return L'A' + var_idx - 26; + if (var_idx < 52) return L'A' + var_idx - 26; + return L'0' + var_idx - 52; } /* check that the range [var_idx, var_idx + var_offset] is a contiguous range */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5794