diff --git a/src/asm/lexer.c b/src/asm/lexer.c index e5fd594e..e26019c5 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -269,6 +269,7 @@ YY_BUFFER_STATE yy_create_buffer(FILE *f) /* Convert all line endings to LF and spaces */ char *mem = pBuffer->pBuffer; + int32_t lineCount = 0; while (*mem) { if ((mem[0] == '\\') && (mem[1] == '\"' || mem[1] == '\\')) { @@ -279,15 +280,22 @@ YY_BUFFER_STATE yy_create_buffer(FILE *f) || ((mem[0] == '\r') && (mem[1] == '\n'))) { *mem++ = ' '; *mem++ = '\n'; + lineCount++; /* LF and CR */ } else if ((mem[0] == '\n') || (mem[0] == '\r')) { *mem++ = '\n'; + lineCount++; } else { mem++; } } } + if (mem != pBuffer->pBuffer + size) { + nLineNo = lineCount + 1; + fatalerror("Found null character"); + } + /* Remove comments */ mem = pBuffer->pBuffer; diff --git a/test/asm/null-in-macro.out b/test/asm/null-in-macro.out index 13f603d2..90943ee0 100644 --- a/test/asm/null-in-macro.out +++ b/test/asm/null-in-macro.out @@ -1,2 +1,2 @@ -ERROR: null-in-macro.asm(1): - Unterminated MACRO definition. +ERROR: null-in-macro.asm(2): + Found null character