inpcom.c, abstraction, free_function()

This commit is contained in:
rlar 2013-05-18 23:01:12 +02:00
parent cb6340bf5b
commit 5e00cbb3dd
1 changed files with 17 additions and 8 deletions

View File

@ -2759,6 +2759,19 @@ find_function(char *name)
}
static void
free_function(struct function *fcn)
{
int i;
tfree(fcn->name);
tfree(fcn->macro);
for (i = 0; i < fcn->num_parameters; i++)
tfree(fcn->params[i]);
}
static void
inp_get_func_from_line(char *line)
{
@ -3068,7 +3081,7 @@ static void
inp_expand_macros_in_deck(struct line *deck)
{
struct line *c = deck;
int prev_num_functions = 0, i, j;
int prev_num_functions = 0, i;
while (c != NULL) {
if (*c->li_line == '*') {
@ -3083,13 +3096,9 @@ inp_expand_macros_in_deck(struct line *deck)
}
if (ciprefix(".ends", c->li_line)) {
if (prev_num_functions != num_functions) {
for (i = prev_num_functions; i < num_functions; i++) {
tfree(functions[i].name);
tfree(functions[i].macro);
for (j = 0; j < functions[i].num_parameters; j++)
tfree(functions[i].params[j]);
num_functions = prev_num_functions;
}
for (i = prev_num_functions; i < num_functions; i++)
free_function(& functions[i]);
num_functions = prev_num_functions;
}
}