diff --git a/src/asm/globlex.c b/src/asm/globlex.c index c26cdc4d..3bb64164 100644 --- a/src/asm/globlex.c +++ b/src/asm/globlex.c @@ -208,10 +208,14 @@ PutMacroArg(char *src, ULONG size) char *s; yyskipbytes(size); - if ((s = sym_FindMacroArg(src[1] - '0')) != NULL) { - yyunputstr(s); + if ((size == 2 && src[1] >= '1' && src[1] <= '9')) { + if ((s = sym_FindMacroArg(src[1] - '0')) != NULL) { + yyunputstr(s); + } else { + yyerror("Macro argument not defined"); + } } else { - yyerror("Macro argument not defined"); + yyerror("Invalid macro argument"); } return (0); } @@ -387,7 +391,7 @@ setuplex(void) id = lex_FloatAlloc(&tMacroArgToken); lex_FloatAddFirstRange(id, '\\', '\\'); - lex_FloatAddSecondRange(id, '0', '9'); + lex_FloatAddSecondRange(id, '1', '9'); id = lex_FloatAlloc(&tMacroUniqueToken); lex_FloatAddFirstRange(id, '\\', '\\'); lex_FloatAddSecondRange(id, '@', '@'); diff --git a/src/asm/lexer.c b/src/asm/lexer.c index ce341ec0..8d6a8a25 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -437,7 +437,6 @@ CopyMacroArg(char *dest, size_t maxLength, char c) int argNum; switch (c) { - case '0': case '1': case '2': case '3':