projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed a whole lot more memory leaks.
[pspp]
/
src
/
q2c.c
diff --git
a/src/q2c.c
b/src/q2c.c
index 0ffc79f0ea10d4b2356d6f8ce2cc6d3eb6bf9077..1361320491b25a614fb90bc13d5a9c12e89b9aa6 100644
(file)
--- 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 (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 ();
st_lower (sbc->prefix), st_lower (sbc->name));
dump (0, "goto lossage;");
outdent ();
@@
-2058,11
+2058,17
@@
dump_free (int persistent)
{
switch (sbc->type)
{
{
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:
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;
break;
default:
break;