diff options
| author | Raghuram Subramani <raghus2247@gmail.com> | 2025-06-12 17:30:41 +0530 |
|---|---|---|
| committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-06-12 17:30:41 +0530 |
| commit | 91841cc629e1815543229c1de5f52105b96f92a0 (patch) | |
| tree | ac7983c684a62ef6461e6a0332043d3a6e4f5b77 | |
| parent | d2ee026b35c6d43090081c6a5bb119d10ec76d4c (diff) | |
lexer: fix no null terminator on lexeme
| -rw-r--r-- | src/lexer.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lexer.cc b/src/lexer.cc index 00ff600..a11adb3 100644 --- a/src/lexer.cc +++ b/src/lexer.cc @@ -29,7 +29,7 @@ Lexer::scan(void) } Token token_eof; - token_eof.init(EOFF, "EOF", 2); + token_eof.init(EOFF, "EOF", m_line); m_tokens->add(&token_eof); token_eof.clean(); @@ -81,15 +81,16 @@ Lexer::match(char c) void Lexer::add_token(token_type_e type) { - size_t token_size = m_current - m_start; - if (token_size == 0) - token_size++; + size_t token_length = m_current - m_start; + if (token_length == 0) + token_length++; - char *text = (char *) malloc(sizeof(char) * token_size); - strncpy(text, m_script + m_start, token_size); + char *lexeme = (char *) malloc(sizeof(char) * token_length + 1); + strncpy(lexeme, m_script + m_start, token_length); + lexeme[sizeof(char) * token_length] = '\0'; Token token; - token.init(type, text, m_line); + token.init(type, lexeme, m_line); m_tokens->add(&token); token.clean(); } |
