diff --git a/src/frontend/parse.c b/src/frontend/parse.c index 612a2172b..81adc1958 100644 --- a/src/frontend/parse.c +++ b/src/frontend/parse.c @@ -288,6 +288,7 @@ mkfnode(const char *func, struct pnode *arg) if ((f->fu_name == NULL) && arg->pn_value) { /* Kludge -- maybe it is really a variable name. */ (void) sprintf(buf, "%s(%s)", func, arg->pn_value->v_name); + free_pnode(arg); d = vec_get(buf); if (d == NULL) { /* Well, too bad. */ @@ -300,6 +301,7 @@ mkfnode(const char *func, struct pnode *arg) } else if (f->fu_name == NULL) { fprintf(cp_err, "Error: no function as %s with that arity.\n", func); + free_pnode(arg); return (NULL); }