diff options
| -rw-r--r-- | tools/lib/traceevent/parse-filter.c | 15 | 
1 files changed, 15 insertions, 0 deletions
| diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c index ad17855528f9..5ea4326ad11f 100644 --- a/tools/lib/traceevent/parse-filter.c +++ b/tools/lib/traceevent/parse-filter.c @@ -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); |