From a014cd8da9c046635bc11c3fc87723ec5c6b73ea Mon Sep 17 00:00:00 2001 From: phoebos Date: Sun, 5 Jun 2022 22:33:57 +0100 Subject: [PATCH] (uxnasm) only ignore [ or ] if it is a whole token Currently, tokens beginning with a [ or ] character are completely ignored, which forbids a macro from beginning with these characters. Specifically, a macro can be declared eg. as `%[x { ... }` but cannot be dereferenced as `[x`. This patch only ignores these tokens if they have a length of 1; otherwise the switch falls through to the default case. --- src/uxnasm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/uxnasm.c b/src/uxnasm.c index b4243d6..e5e6a35 100644 --- a/src/uxnasm.c +++ b/src/uxnasm.c @@ -343,8 +343,8 @@ parse(char *w, FILE *f) while((c = w[++i])) if(!writebyte(c)) return 0; break; - case '[': break; /* ignored */ - case ']': break; /* ignored */ + case '[': if (slen(w) == 1) break; /* else FALLTHROUGH */ + case ']': if (slen(w) == 1) break; /* else FALLTHROUGH */ default: /* opcode */ if(findopcode(w) || scmp(w, "BRK", 4)) {