diff --git a/src/frontend/dotcards.c b/src/frontend/dotcards.c index f855228e6..ba0a9e41c 100644 --- a/src/frontend/dotcards.c +++ b/src/frontend/dotcards.c @@ -275,10 +275,15 @@ ft_cktcoms(bool terse) while (coms) { wordlist* freecom; freecom = command = cp_lexer(coms->wl_word); - if (!command || command->wl_word == (char *) NULL) { + if (!command) { /* Line not converted to a wordlist */ goto bad; } + if (command->wl_word == (char*)NULL) { + /* Line not converted to a wordlist */ + wl_free(freecom); + goto bad; + } if (eq(command->wl_word, ".width")) { do command = command->wl_next; @@ -288,6 +293,7 @@ ft_cktcoms(bool terse) if (!s || !s[1]) { fprintf(cp_err, "Error: bad line %s\n", coms->wl_word); coms = coms->wl_next; + wl_free(freecom); continue; } i = atoi(++s); @@ -302,6 +308,7 @@ ft_cktcoms(bool terse) if (!command) { fprintf(cp_err, "Error: bad line %s\n", coms->wl_word); coms = coms->wl_next; + wl_free(freecom); continue; } plottype = command->wl_word; @@ -330,6 +337,7 @@ ft_cktcoms(bool terse) fprintf(cp_err, "Error: bad line %s\n", coms->wl_word); coms = coms->wl_next; + wl_free(freecom); continue; } plottype = command->wl_word; @@ -364,9 +372,9 @@ ft_cktcoms(bool terse) } } else if (!eq(command->wl_word, ".save") && !eq(command->wl_word, ".op") && - // !eq(command->wl_word, ".measure") && !ciprefix(".meas", command->wl_word) && !eq(command->wl_word, ".tf")) { + wl_free(freecom); goto bad; } coms = coms->wl_next; /* go to next line */