ref: a52a00a9ca7753ef41814b55878b510e8dc80b7b
parent: fa13611bbf6a1db1a439d9ba4ec9e6e8bb4f9f7c
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Tue Aug 30 12:50:34 EDT 2022
`macro_UndefUniqueID` uses 0 to mean `\@` is undefined
--- a/include/asm/macro.h
+++ b/include/asm/macro.h
@@ -31,6 +31,7 @@
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);
--- a/src/asm/fstack.c
+++ b/src/asm/fstack.c
@@ -336,8 +336,7 @@
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 @@
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;
--- a/src/asm/macro.c
+++ b/src/asm/macro.c
@@ -166,7 +166,13 @@
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)