From 7e84a75ff7a363015f9a5e1d2ba22e5140624d62 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 18 May 2013 23:01:12 +0200 Subject: [PATCH] inpcom.c, abstraction, free_function() --- src/frontend/inpcom.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index d1272d385..aebd054ac 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -2750,6 +2750,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) { @@ -3059,7 +3072,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 == '*') { @@ -3074,13 +3087,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; } }