From aec02df1d38a4764686158c5c9126778c84a3031 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 20 Feb 2013 12:53:23 +0100 Subject: [PATCH] isl_arg.c: extract out free_child Signed-off-by: Sven Verdoolaege --- isl_arg.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/isl_arg.c b/isl_arg.c index 7811b6b9..191e9baf 100644 --- a/isl_arg.c +++ b/isl_arg.c @@ -130,6 +130,17 @@ void isl_args_set_defaults(struct isl_args *args, void *opt) } } +static void free_args(struct isl_arg *arg, void *opt); + +static void free_child(struct isl_arg *arg, void *opt) +{ + if (arg->offset == (size_t) -1) + free_args(arg->u.child.child->args, opt); + else + isl_args_free(arg->u.child.child, + *(void **)(((char *)opt) + arg->offset)); +} + static void free_str_list(struct isl_arg *arg, void *opt) { int i; @@ -154,11 +165,7 @@ static void free_args(struct isl_arg *arg, void *opt) for (i = 0; arg[i].type != isl_arg_end; ++i) { switch (arg[i].type) { case isl_arg_child: - if (arg[i].offset == (size_t) -1) - free_args(arg[i].u.child.child->args, opt); - else - isl_args_free(arg[i].u.child.child, - *(void **)(((char *)opt) + arg[i].offset)); + free_child(&arg[i], opt); break; case isl_arg_arg: case isl_arg_str: -- 2.11.4.GIT