diff --git a/src/asm/globlex.c b/src/asm/globlex.c index 17032553..14f45c5d 100644 --- a/src/asm/globlex.c +++ b/src/asm/globlex.c @@ -198,10 +198,10 @@ char *AppendMacroArg(char whichArg, char *dest, size_t *destIndex) if (whichArg == '@') marg = sym_FindMacroArg(-1); - else if (whichArg >= '0' && whichArg <= '9') + else if (whichArg >= '1' && whichArg <= '9') marg = sym_FindMacroArg(whichArg - '0'); else - fatalerror("Malformed ID"); + fatalerror("Invalid macro argument '\\%c' in symbol", whichArg); if (!marg) fatalerror("Macro argument '\\%c' not defined", whichArg); diff --git a/test/asm/symbol-invalid-macro-arg.asm b/test/asm/symbol-invalid-macro-arg.asm new file mode 100644 index 00000000..6806b7e3 --- /dev/null +++ b/test/asm/symbol-invalid-macro-arg.asm @@ -0,0 +1 @@ +x\0 diff --git a/test/asm/symbol-invalid-macro-arg.out b/test/asm/symbol-invalid-macro-arg.out new file mode 100644 index 00000000..ff94c3c2 --- /dev/null +++ b/test/asm/symbol-invalid-macro-arg.out @@ -0,0 +1,2 @@ +ERROR: symbol-invalid-macro-arg.asm(1): + Invalid macro argument '\0' in symbol