From a52a00a9ca7753ef41814b55878b510e8dc80b7b Mon Sep 17 00:00:00 2001 From: Rangi Date: Tue, 30 Aug 2022 16:50:34 -0400 Subject: [PATCH] `macro_UndefUniqueID` uses 0 to mean `\@` is undefined --- include/asm/macro.h | 1 + src/asm/fstack.c | 6 ++---- src/asm/macro.c | 8 +++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/asm/macro.h b/include/asm/macro.h index 80221179..e0988ee9 100644 --- a/include/asm/macro.h +++ b/include/asm/macro.h @@ -31,6 +31,7 @@ uint32_t macro_GetUniqueID(void); char const *macro_GetUniqueIDStr(void); void macro_SetUniqueID(uint32_t id); uint32_t macro_UseNewUniqueID(void); +uint32_t macro_UndefUniqueID(void); void macro_ShiftCurrentArgs(int32_t count); uint32_t macro_NbArgs(void); diff --git a/src/asm/fstack.c b/src/asm/fstack.c index 791aa13b..5ce5aa37 100644 --- a/src/asm/fstack.c +++ b/src/asm/fstack.c @@ -336,8 +336,7 @@ void fstk_RunInclude(char const *path) fatalerror("Failed to set up lexer for file include\n"); lexer_SetStateAtEOL(contextStack->lexerState); // We're back at top-level, so most things are reset - contextStack->uniqueID = 0; - macro_SetUniqueID(0); + contextStack->uniqueID = macro_UndefUniqueID(); } void fstk_RunMacro(char const *macroName, struct MacroArgs *args) @@ -539,8 +538,7 @@ void fstk_Init(char const *mainPath, size_t maxDepth) context->parent = NULL; context->lexerState = state; - context->uniqueID = 0; - macro_SetUniqueID(0); + context->uniqueID = macro_UndefUniqueID(); context->nbReptIters = 0; context->forValue = 0; context->forStep = 0; diff --git a/src/asm/macro.c b/src/asm/macro.c index 2e500028..30fd9ed2 100644 --- a/src/asm/macro.c +++ b/src/asm/macro.c @@ -166,7 +166,13 @@ void macro_SetUniqueID(uint32_t id) uint32_t macro_UseNewUniqueID(void) { macro_SetUniqueID(++maxUniqueID); - return maxUniqueID; + return uniqueID; +} + +uint32_t macro_UndefUniqueID(void) +{ + macro_SetUniqueID(0); + return uniqueID; } void macro_ShiftCurrentArgs(int32_t count)