clownassembler
clownassembler copied to clipboard
Assembler segfault if macros recurse infinitely
So, I was writing a DMA macro and made a mistake:
DmaToVram: macro from, to, len, areg
DmaToVram \from, \to, \len, 2, \areg
endm
That second DmaToVram was supposed to be DmaToVramEx. Anyway, what happened is that the assembler crashed with a segfault because it recursed too much. Ideally there should be a macro nesting limit so the assembler has a chance to show a proper error message (even if the limit is something absurd like 50 or 100 nests, since the biggest concern is infinite recursion in practice).
I mean, if the macro is calling itself, it should just stop right there, since it's not properly defined. That wouldn't stop cases where two or more macros call each other, though.