From f4d68c6a08cea0c9447ebd46eaee0e784a91b010 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 31 Mar 2011 20:50:13 +0000 Subject: Memory leak in lemon.c coverity 1177 svn path=/trunk/; revision=36427 --- tools/lemon/lemon.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'tools/lemon') diff --git a/tools/lemon/lemon.c b/tools/lemon/lemon.c index 25ec059368..78bcf3198f 100644 --- a/tools/lemon/lemon.c +++ b/tools/lemon/lemon.c @@ -3128,15 +3128,15 @@ PRIVATE void tplt_xfer(const char *name, FILE *in, FILE *out, int *lineno) PRIVATE FILE *tplt_open(struct lemon *lemp) { static char templatename[] = "lempar.c"; - char* buf; FILE *in; char *tpltname = NULL; char *cp; if (lemp->templatename) { tpltname = strdup(lemp->templatename); - } - else { + } else { + char* buf; + cp = strrchr(lemp->filename,'.'); buf = malloc(1000); if( cp ){ @@ -3145,13 +3145,13 @@ PRIVATE FILE *tplt_open(struct lemon *lemp) sprintf(buf,"%s.lt",lemp->filename); } if( access(buf,004)==0 ){ - tpltname = buf; + tpltname = strdup(buf); }else if( access(templatename,004)==0 ){ tpltname = strdup(templatename); }else{ tpltname = pathsearch(lemp->argv0,templatename,0); - free(buf); } + free(buf); } if( tpltname==0 ){ fprintf(stderr,"Can't find the parser driver template file \"%s\".\n", -- cgit v1.2.3