X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fq2c.c;h=1361320491b25a614fb90bc13d5a9c12e89b9aa6;hb=d043fde2b737897e3372670afc47eb648c17624b;hp=0ffc79f0ea10d4b2356d6f8ce2cc6d3eb6bf9077;hpb=b321086267ad1014dc5d09886396cde30f094437;p=pspp diff --git a/src/q2c.c b/src/q2c.c index 0ffc79f0ea..1361320491 100644 --- a/src/q2c.c +++ b/src/q2c.c @@ -1611,7 +1611,7 @@ dump_subcommand (const subcommand *sbc) { dump (0, "p->%sv_%s = parse_variable ();", st_lower (sbc->prefix), st_lower (sbc->name)); - dump (1, "if (p->%sv_%s)", + dump (1, "if (!p->%sv_%s)", st_lower (sbc->prefix), st_lower (sbc->name)); dump (0, "goto lossage;"); outdent (); @@ -2058,11 +2058,17 @@ dump_free (int persistent) { switch (sbc->type) { + case SBC_VARLIST: + dump (0, "free (p->v_variables);"); + break; case SBC_STRING: dump (0, "free (p->s_%s);", st_lower (sbc->name)); break; case SBC_DBL_LIST: - dump (0, "subc_list_double_destroy(p->dl_%s);", st_lower (sbc->name)); + dump (0, "int i;"); + dump (1, "for(i = 0; i < MAXLISTS ; ++i)"); + dump (0, "subc_list_double_destroy(&p->dl_%s[i]);", st_lower (sbc->name)); + outdent(); break; default: break;