From f1f4c93a8e8a6721bd0cf01c903e7d397eb79240 Mon Sep 17 00:00:00 2001 From: omicron Date: Fri, 4 Apr 2025 19:45:34 +0200 Subject: [PATCH] Fix bug in lexer_next_number not correctly tracking character number When a number has a suffix the lexer state didn't record the number of characters consumed for this suffix. This made the lexer state be 2-3 characters short in its line location reporting until it encountered a newline character. It did not otherwise corrupt the state of the lexer. --- src/lexer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lexer.c b/src/lexer.c index 7e5e829..94087b6 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -299,6 +299,7 @@ error_t *lexer_next_number(lexer_t *lex, lexer_token_t *token) { token->explanation = "Number length exceeds the maximum of 128 characters"; } + lex->character_number += n; so_far += n; if (n == 0) { token->id = TOKEN_ERROR; @@ -328,10 +329,11 @@ error_t *lexer_next_number(lexer_t *lex, lexer_token_t *token) { token->id = TOKEN_ERROR; token->explanation = "Number length exceeds the maximum of 128 characters"; + } else { + lex->character_number += suffix_length; } } - lex->character_number += n; token->value = strdup(buffer); return nullptr; }