diff options
Diffstat (limited to 'tools/lib')
| -rw-r--r-- | tools/lib/traceevent/event-parse.c | 9 | ||||
| -rw-r--r-- | tools/lib/traceevent/parse-filter.c | 15 |
2 files changed, 21 insertions, 3 deletions
diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c index 47264b4652b9..f2989c525e48 100644 --- a/tools/lib/traceevent/event-parse.c +++ b/tools/lib/traceevent/event-parse.c | |||
| @@ -2602,6 +2602,9 @@ find_func_handler(struct pevent *pevent, char *func_name) | |||
| 2602 | { | 2602 | { |
| 2603 | struct pevent_function_handler *func; | 2603 | struct pevent_function_handler *func; |
| 2604 | 2604 | ||
| 2605 | if (!pevent) | ||
| 2606 | return NULL; | ||
| 2607 | |||
| 2605 | for (func = pevent->func_handlers; func; func = func->next) { | 2608 | for (func = pevent->func_handlers; func; func = func->next) { |
| 2606 | if (strcmp(func->name, func_name) == 0) | 2609 | if (strcmp(func->name, func_name) == 0) |
| 2607 | break; | 2610 | break; |
| @@ -4938,6 +4941,9 @@ enum pevent_errno __pevent_parse_format(struct event_format **eventp, | |||
| 4938 | goto event_alloc_failed; | 4941 | goto event_alloc_failed; |
| 4939 | } | 4942 | } |
| 4940 | 4943 | ||
| 4944 | /* Add pevent to event so that it can be referenced */ | ||
| 4945 | event->pevent = pevent; | ||
| 4946 | |||
| 4941 | ret = event_read_format(event); | 4947 | ret = event_read_format(event); |
| 4942 | if (ret < 0) { | 4948 | if (ret < 0) { |
| 4943 | ret = PEVENT_ERRNO__READ_FORMAT_FAILED; | 4949 | ret = PEVENT_ERRNO__READ_FORMAT_FAILED; |
| @@ -5041,9 +5047,6 @@ enum pevent_errno pevent_parse_event(struct pevent *pevent, const char *buf, | |||
| 5041 | if (event == NULL) | 5047 | if (event == NULL) |
| 5042 | return ret; | 5048 | return ret; |
| 5043 | 5049 | ||
| 5044 | /* Add pevent to event so that it can be referenced */ | ||
| 5045 | event->pevent = pevent; | ||
| 5046 | |||
| 5047 | if (add_event(pevent, event)) { | 5050 | if (add_event(pevent, event)) { |
| 5048 | ret = PEVENT_ERRNO__MEM_ALLOC_FAILED; | 5051 | ret = PEVENT_ERRNO__MEM_ALLOC_FAILED; |
| 5049 | goto event_add_failed; | 5052 | goto event_add_failed; |
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) | |||
| 209 | switch (arg->type) { | 209 | switch (arg->type) { |
| 210 | case FILTER_ARG_NONE: | 210 | case FILTER_ARG_NONE: |
| 211 | case FILTER_ARG_BOOLEAN: | 211 | case FILTER_ARG_BOOLEAN: |
| 212 | break; | ||
| 213 | |||
| 212 | case FILTER_ARG_NUM: | 214 | case FILTER_ARG_NUM: |
| 215 | free_arg(arg->num.left); | ||
| 216 | free_arg(arg->num.right); | ||
| 217 | break; | ||
| 218 | |||
| 219 | case FILTER_ARG_EXP: | ||
| 220 | free_arg(arg->exp.left); | ||
| 221 | free_arg(arg->exp.right); | ||
| 213 | break; | 222 | break; |
| 214 | 223 | ||
| 215 | case FILTER_ARG_STR: | 224 | case FILTER_ARG_STR: |
| @@ -218,6 +227,12 @@ static void free_arg(struct filter_arg *arg) | |||
| 218 | free(arg->str.buffer); | 227 | free(arg->str.buffer); |
| 219 | break; | 228 | break; |
| 220 | 229 | ||
| 230 | case FILTER_ARG_VALUE: | ||
| 231 | if (arg->value.type == FILTER_STRING || | ||
| 232 | arg->value.type == FILTER_CHAR) | ||
| 233 | free(arg->value.str); | ||
| 234 | break; | ||
| 235 | |||
| 221 | case FILTER_ARG_OP: | 236 | case FILTER_ARG_OP: |
| 222 | free_arg(arg->op.left); | 237 | free_arg(arg->op.left); |
| 223 | free_arg(arg->op.right); | 238 | free_arg(arg->op.right); |
