diff --git a/src/asm/lexer.c b/src/asm/lexer.c index dc2be553..522122a4 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -751,6 +751,10 @@ static void beginExpansion(size_t distance, uint8_t skip, char const *str, size_t size, bool owned, char const *name) { + /* Do not expand empty strings */ + if (!size) + return; + distance += lexerState->expansionOfs; /* Distance argument is relative to read offset! */ /* Increase the total length of all parents, and return the topmost one */ struct Expansion *parent = NULL; diff --git a/test/asm/expand-empty-string.asm b/test/asm/expand-empty-string.asm new file mode 100644 index 00000000..242377e8 --- /dev/null +++ b/test/asm/expand-empty-string.asm @@ -0,0 +1,6 @@ +test: MACRO +v equs "X" +X equs "" ; should not be expanded +\1 +ENDM + test v 0 diff --git a/test/asm/expand-empty-string.err b/test/asm/expand-empty-string.err new file mode 100644 index 00000000..e7b79c7a --- /dev/null +++ b/test/asm/expand-empty-string.err @@ -0,0 +1,3 @@ +ERROR: expand-empty-string.asm(6) -> expand-empty-string.asm::test(4): + syntax error, unexpected number +error: Assembly aborted (1 error)! diff --git a/test/asm/expand-empty-string.out b/test/asm/expand-empty-string.out new file mode 100644 index 00000000..e69de29b diff --git a/test/asm/expand-empty-string.simple.err b/test/asm/expand-empty-string.simple.err new file mode 100644 index 00000000..6eb2978c --- /dev/null +++ b/test/asm/expand-empty-string.simple.err @@ -0,0 +1,3 @@ +ERROR: expand-empty-string.asm(6) -> expand-empty-string.asm::test(4): + syntax error +error: Assembly aborted (1 error)!