Remove some false positives and enable the check.
[smatch.git] / smatch_tracker.c
blobb7069dd258afa125a3e00e811c1dd6681c1f0255
1 #include "smatch.h"
3 ALLOCATOR(tracker, "trackers");
5 void add_tracker(struct tracker_list **list, const char *name, int owner,
6 struct symbol *sym)
8 struct tracker *tmp;
10 if (in_tracker_list(*list, name, owner, sym))
11 return;
13 tmp = __alloc_tracker(0);
14 tmp->name = alloc_string(name);
15 tmp->owner = owner;
16 tmp->sym = sym;
17 add_ptr_list(list, tmp);
20 int in_tracker_list(struct tracker_list *list, const char *name, int owner,
21 struct symbol *sym)
23 struct tracker *tmp;
25 FOR_EACH_PTR(list, tmp) {
26 if (tmp->owner == owner && tmp->sym == sym
27 && !strcmp(tmp->name, name))
28 return 1;
29 } END_FOR_EACH_PTR(tmp);
30 return 0;
33 void free_tracker_list(struct tracker_list **list)
35 __free_ptr_list((struct ptr_list **)list);
38 void free_trackers_and_list(struct tracker_list **list)
40 struct tracker *tmp;
42 FOR_EACH_PTR(*list, tmp) {
43 free_string(tmp->name);
44 __free_tracker(tmp);
45 } END_FOR_EACH_PTR(tmp);
46 free_tracker_list(list);