fix memory leak in PPparse()

This commit is contained in:
rlar 2012-04-05 21:30:05 +02:00
parent 76336fa21b
commit 15bda2b9e0
2 changed files with 8 additions and 4 deletions

View File

@ -1,6 +1,6 @@
%{
/*
* (compile (concat "bison " buffer-file-name))
* (compile (concat "bison " (file-relative-name buffer-file-name)))
*/
#include <stdio.h>
@ -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); }

View File

@ -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);
}
}