From aa28d31a83a3b4f910d427b0c9b5295c688bdbc4 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 5 Dec 2012 22:16:03 +0300 Subject: [PATCH] states: introduce get_all_state_slist() This is like get_all_states() but it takes the states from a given slist instead of the cur_slist. I had this already in smatch_db.c and I've just renamed it and exported it to everyone. Signed-off-by: Dan Carpenter --- smatch.h | 1 + smatch_db.c | 15 +-------------- smatch_states.c | 13 +++++++++++++ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/smatch.h b/smatch.h index ab659c2b..cb948561 100644 --- a/smatch.h +++ b/smatch.h @@ -210,6 +210,7 @@ void set_true_false_states_expr(int owner, struct expression *expr, struct smatch_state *true_state, struct smatch_state *false_state); +struct state_list *get_all_states_slist(int owner, struct state_list *source); struct state_list *get_all_states(int id); int is_reachable(void); diff --git a/smatch_db.c b/smatch_db.c index eb3e46fd..0515162b 100644 --- a/smatch_db.c +++ b/smatch_db.c @@ -540,19 +540,6 @@ static void call_return_state_hooks(struct expression *expr) } END_FOR_EACH_PTR(cb); } -struct state_list *get_my_states(int owner, struct state_list *source) -{ - struct state_list *slist = NULL; - struct sm_state *tmp; - - FOR_EACH_PTR(source, tmp) { - if (tmp->owner == owner) - add_ptr_list(&slist, tmp); - } END_FOR_EACH_PTR(tmp); - - return slist; -} - static void print_returned_struct_members(int return_id, char *return_ranges, struct expression *expr, struct state_list *slist) { struct returned_member_callback *cb; @@ -578,7 +565,7 @@ static void print_returned_struct_members(int return_id, char *return_ranges, st len = strlen(name); FOR_EACH_PTR(returned_member_callbacks, cb) { - my_slist = get_my_states(cb->owner, slist); + my_slist = get_all_states_slist(cb->owner, slist); FOR_EACH_PTR(my_slist, sm) { if (strncmp(sm->name, name, len) != 0) continue; diff --git a/smatch_states.c b/smatch_states.c index 0cf8bd24..7a338ba8 100644 --- a/smatch_states.c +++ b/smatch_states.c @@ -291,6 +291,19 @@ free: free_string(name); } +struct state_list *get_all_states_slist(int owner, struct state_list *source) +{ + struct state_list *slist = NULL; + struct sm_state *tmp; + + FOR_EACH_PTR(source, tmp) { + if (tmp->owner == owner) + add_ptr_list(&slist, tmp); + } END_FOR_EACH_PTR(tmp); + + return slist; +} + struct state_list *get_all_states(int owner) { struct state_list *slist = NULL; -- 2.11.4.GIT