plug a memory leak when (un)setting variables
This commit is contained in:
parent
64139a243c
commit
fa81e9d007
|
|
@ -104,6 +104,14 @@ cp_vset(char *varname, enum cp_types type, void *value)
|
||||||
}
|
}
|
||||||
w = v;
|
w = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (alreadythere) {
|
||||||
|
if(v->va_type == CP_LIST)
|
||||||
|
free_struct_variable(v->va_vlist);
|
||||||
|
if(v->va_type == CP_STRING)
|
||||||
|
tfree(v->va_string);
|
||||||
|
}
|
||||||
|
|
||||||
if (!v) {
|
if (!v) {
|
||||||
v = alloc(struct variable);
|
v = alloc(struct variable);
|
||||||
v->va_name = copy(copyvarname);
|
v->va_name = copy(copyvarname);
|
||||||
|
|
@ -536,8 +544,9 @@ cp_remvar(char *varname)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
v->va_next = NULL;
|
||||||
tfree(v->va_name);
|
tfree(v->va_name);
|
||||||
tfree(v);
|
free_struct_variable(v);
|
||||||
free_struct_variable(uv1);
|
free_struct_variable(uv1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue