diff --git a/src/frontend/parse-bison.y b/src/frontend/parse-bison.y index d7d5e52f4..2e05ef36a 100644 --- a/src/frontend/parse-bison.y +++ b/src/frontend/parse-bison.y @@ -1,6 +1,6 @@ %{ /* - * (compile (concat "bison " buffer-file-name)) + * (compile (concat "bison " (file-relative-name buffer-file-name))) */ #include @@ -132,7 +132,7 @@ one_exp: exp: TOK_NUM { $$ = mknnode($1); } - | TOK_STR { $$ = mksnode($1); } + | TOK_STR { $$ = mksnode($1); txfree((void*)$1); } | exp ',' exp { $$ = mkbnode(PT_OP_COMMA, $1, $3); } | exp '+' exp { $$ = mkbnode(PT_OP_PLUS, $1, $3); } @@ -147,7 +147,11 @@ exp: | '-' exp %prec NEG { $$ = mkunode(PT_OP_UMINUS, $2); } | '~' exp { $$ = mkunode(PT_OP_NOT, $2); } - | TOK_STR '(' exp ')' { $$ = mkfnode($1, $3); if(!$$) YYABORT; } + | TOK_STR '(' exp ')' { $$ = mkfnode($1, $3); + txfree((void*)$1); + if(!$$) + YYABORT; + } | exp '=' exp { $$ = mkbnode(PT_OP_EQ, $1, $3); } | exp TOK_NE exp { $$ = mkbnode(PT_OP_NE, $1, $3); } diff --git a/src/frontend/parse.c b/src/frontend/parse.c index c44614d14..439b21943 100644 --- a/src/frontend/parse.c +++ b/src/frontend/parse.c @@ -678,7 +678,7 @@ PPlex(YYSTYPE *lvalp, struct PPltype *llocp, char **line) else if (!atsign && ( *sbuf == '[' || *sbuf == ']' )) break; - lvalp->str = copy_substring(start, sbuf); /* XXXX !!!! */ + lvalp->str = copy_substring(start, sbuf); lexer_return(TOK_STR, 0); } }