diff --git a/classes.c b/classes.c index 3e487e8..a7ab8ea 100644 --- a/classes.c +++ b/classes.c @@ -1191,7 +1191,8 @@ int cu__for_each_class(struct cu *self, int cu__for_each_function(struct cu *cu, int (*iterator)(struct function *func, void *cookie), void *cookie, - struct function *(*filter)(struct function *function)) + struct function *(*filter)(struct function *function, + void *cookie)) { struct function *pos; @@ -1199,7 +1200,7 @@ int cu__for_each_function(struct cu *cu, list_for_each_entry(pos, &cu->functions, tag.node) { struct function *function = pos; if (filter != NULL) { - function = filter(pos); + function = filter(pos, cookie); if (function == NULL) continue; } diff --git a/classes.h b/classes.h index 8b43a52..5431e4a 100644 --- a/classes.h +++ b/classes.h @@ -166,7 +166,8 @@ extern int cu__for_each_function(struct cu *cu, int (*iterator)(struct function *func, void *cookie), void *cookie, - struct function *(*filter)(struct function *function)); + struct function *(*filter)(struct function *function, + void *cookie)); extern void cus__for_each_cu(struct cus *self, int (*iterator)(struct cu *cu, void *cookie), diff --git a/pfunct.c b/pfunct.c index 214a0e8..fefb684 100644 --- a/pfunct.c +++ b/pfunct.c @@ -175,7 +175,8 @@ static void fn_stats__chkdupdef(const struct function *self, putchar('\n'); } -static struct function *function__filter(struct function *function) +static struct function *function__filter(struct function *function, + void *cookie) { struct fn_stats *fstats;