|
@@ -161,11 +161,13 @@ add_filter_type(struct event_filter *filter, int id)
|
|
|
if (filter_type)
|
|
|
return filter_type;
|
|
|
|
|
|
- filter->event_filters = realloc(filter->event_filters,
|
|
|
- sizeof(*filter->event_filters) *
|
|
|
- (filter->filters + 1));
|
|
|
- if (!filter->event_filters)
|
|
|
- die("Could not allocate filter");
|
|
|
+ filter_type = realloc(filter->event_filters,
|
|
|
+ sizeof(*filter->event_filters) *
|
|
|
+ (filter->filters + 1));
|
|
|
+ if (!filter_type)
|
|
|
+ return NULL;
|
|
|
+
|
|
|
+ filter->event_filters = filter_type;
|
|
|
|
|
|
for (i = 0; i < filter->filters; i++) {
|
|
|
if (filter->event_filters[i].event_id > id)
|
|
@@ -1180,6 +1182,12 @@ static int filter_event(struct event_filter *filter,
|
|
|
}
|
|
|
|
|
|
filter_type = add_filter_type(filter, event->id);
|
|
|
+ if (filter_type == NULL) {
|
|
|
+ show_error(error_str, "failed to add a new filter: %s",
|
|
|
+ filter_str ? filter_str : "true");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
if (filter_type->filter)
|
|
|
free_arg(filter_type->filter);
|
|
|
filter_type->filter = arg;
|
|
@@ -1417,6 +1425,9 @@ static int copy_filter_type(struct event_filter *filter,
|
|
|
arg->boolean.value = 0;
|
|
|
|
|
|
filter_type = add_filter_type(filter, event->id);
|
|
|
+ if (filter_type == NULL)
|
|
|
+ return -1;
|
|
|
+
|
|
|
filter_type->filter = arg;
|
|
|
|
|
|
free(str);
|