aboutsummaryrefslogtreecommitdiff
path: root/src/lexer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.cc')
-rw-r--r--src/lexer.cc7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lexer.cc b/src/lexer.cc
index 2be5cbf..96c5df9 100644
--- a/src/lexer.cc
+++ b/src/lexer.cc
@@ -85,13 +85,12 @@ Lexer::match(char c)
void
Lexer::add_token(token_type_e type)
{
- size_t token_length = m_current - m_start;
+ int token_length = m_current - m_start;
if (token_length == 0)
token_length++;
- char *lexeme = (char *) malloc(sizeof(char) * token_length + 1);
- strncpy(lexeme, m_script + m_start, token_length);
- lexeme[sizeof(char) * token_length] = '\0';
+ char *lexeme;
+ asprintf(&lexeme, "%.*s", token_length, m_script + m_start);
Token token;
token.init(type, lexeme, m_line);