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)