aboutsummaryrefslogtreecommitdiff
path: root/src/lexer.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.l')
-rw-r--r--src/lexer.l17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/lexer.l b/src/lexer.l
index 4f6598a..1f4c520 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -4,6 +4,7 @@
%option reentrant noyywrap nounput noinput nodefault
%{
#define FROM_LEXER
+#include <fwd/tracker.h>
#include <fwd/parser.h>
#include <fwd/debug.h>
@@ -140,7 +141,13 @@ STRING \"(\\.|[^"\\])*\"
"sizeof" {return SIZEOF;}
{STRING} {
- yylval->str = strdup(yytext);
+ yylval->str = strdupc(yytext);
+ if (!yylval->str) {
+ internal_error("failed allocating lexed string");
+ return ERROR;
+ }
+
+ track_ptr(yylval->str);
return STRING;
}
@@ -150,7 +157,13 @@ STRING \"(\\.|[^"\\])*\"
}
{ID} {
- yylval->str = strdup(yytext);
+ yylval->str = strdupc(yytext);
+ if (!yylval->str) {
+ internal_error("failed allocating lexed ID");
+ return ERROR;
+ }
+
+ track_ptr(yylval->str);
return ID;
}