aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lexer.cc15
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();
}