Browse Source

more precise freeing the wordlist, depending on exit point

pre-master-46
Holger Vogt 6 years ago
parent
commit
458411b2e1
  1. 12
      src/frontend/dotcards.c

12
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 */

Loading…
Cancel
Save