|
@@ -287,7 +287,7 @@ static int event_match(struct event_format *event,
|
|
|
!regexec(ereg, event->name, 0, NULL, 0);
|
|
|
}
|
|
|
|
|
|
-static int
|
|
|
+static enum pevent_errno
|
|
|
find_event(struct pevent *pevent, struct event_list **events,
|
|
|
char *sys_name, char *event_name)
|
|
|
{
|
|
@@ -306,23 +306,31 @@ find_event(struct pevent *pevent, struct event_list **events,
|
|
|
sys_name = NULL;
|
|
|
}
|
|
|
|
|
|
- reg = malloc_or_die(strlen(event_name) + 3);
|
|
|
+ reg = malloc(strlen(event_name) + 3);
|
|
|
+ if (reg == NULL)
|
|
|
+ return PEVENT_ERRNO__MEM_ALLOC_FAILED;
|
|
|
+
|
|
|
sprintf(reg, "^%s$", event_name);
|
|
|
|
|
|
ret = regcomp(&ereg, reg, REG_ICASE|REG_NOSUB);
|
|
|
free(reg);
|
|
|
|
|
|
if (ret)
|
|
|
- return -1;
|
|
|
+ return PEVENT_ERRNO__INVALID_EVENT_NAME;
|
|
|
|
|
|
if (sys_name) {
|
|
|
- reg = malloc_or_die(strlen(sys_name) + 3);
|
|
|
+ reg = malloc(strlen(sys_name) + 3);
|
|
|
+ if (reg == NULL) {
|
|
|
+ regfree(&ereg);
|
|
|
+ return PEVENT_ERRNO__MEM_ALLOC_FAILED;
|
|
|
+ }
|
|
|
+
|
|
|
sprintf(reg, "^%s$", sys_name);
|
|
|
ret = regcomp(&sreg, reg, REG_ICASE|REG_NOSUB);
|
|
|
free(reg);
|
|
|
if (ret) {
|
|
|
regfree(&ereg);
|
|
|
- return -1;
|
|
|
+ return PEVENT_ERRNO__INVALID_EVENT_NAME;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -342,9 +350,9 @@ find_event(struct pevent *pevent, struct event_list **events,
|
|
|
regfree(&sreg);
|
|
|
|
|
|
if (!match)
|
|
|
- return -1;
|
|
|
+ return PEVENT_ERRNO__EVENT_NOT_FOUND;
|
|
|
if (fail)
|
|
|
- return -2;
|
|
|
+ return PEVENT_ERRNO__MEM_ALLOC_FAILED;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -1312,7 +1320,10 @@ int pevent_filter_add_filter_str(struct event_filter *filter,
|
|
|
/* Find this event */
|
|
|
ret = find_event(pevent, &events, strim(sys_name), strim(event_name));
|
|
|
if (ret < 0) {
|
|
|
- if (event_name)
|
|
|
+ if (ret == PEVENT_ERRNO__MEM_ALLOC_FAILED)
|
|
|
+ show_error(error_str,
|
|
|
+ "Memory allocation failure");
|
|
|
+ else if (event_name)
|
|
|
show_error(error_str,
|
|
|
"No event found under '%s.%s'",
|
|
|
sys_name, event_name);
|