diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2011-03-31 20:50:13 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2011-03-31 20:50:13 +0000 |
commit | f4d68c6a08cea0c9447ebd46eaee0e784a91b010 (patch) | |
tree | ba49697d969cba6473e51af65303c9af4bfeff35 | |
parent | 67608483152aa645d6f3c1e96dc742f0b923afeb (diff) |
Memory leak in lemon.c
coverity 1177
svn path=/trunk/; revision=36427
-rw-r--r-- | tools/lemon/lemon.c | 10 |
1 files changed, 5 insertions, 5 deletions
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", |