tools lib traceevent: Fix missed freeing of subargs in free_arg() in filter
Some of args were missed in free_args(), as well as subargs. That is args like FILTER_ARG_NUM have left and right pointers to other args that also need to be freed. Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Cc: Ingo Molnar <mingo@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1349137408.22822.135.camel@gandalf.local.home Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
101782ea2c
Коммит
743df75ff1
|
@ -209,7 +209,16 @@ static void free_arg(struct filter_arg *arg)
|
|||
switch (arg->type) {
|
||||
case FILTER_ARG_NONE:
|
||||
case FILTER_ARG_BOOLEAN:
|
||||
break;
|
||||
|
||||
case FILTER_ARG_NUM:
|
||||
free_arg(arg->num.left);
|
||||
free_arg(arg->num.right);
|
||||
break;
|
||||
|
||||
case FILTER_ARG_EXP:
|
||||
free_arg(arg->exp.left);
|
||||
free_arg(arg->exp.right);
|
||||
break;
|
||||
|
||||
case FILTER_ARG_STR:
|
||||
|
@ -218,6 +227,12 @@ static void free_arg(struct filter_arg *arg)
|
|||
free(arg->str.buffer);
|
||||
break;
|
||||
|
||||
case FILTER_ARG_VALUE:
|
||||
if (arg->value.type == FILTER_STRING ||
|
||||
arg->value.type == FILTER_CHAR)
|
||||
free(arg->value.str);
|
||||
break;
|
||||
|
||||
case FILTER_ARG_OP:
|
||||
free_arg(arg->op.left);
|
||||
free_arg(arg->op.right);
|
||||
|
|
Загрузка…
Ссылка в новой задаче