From 6c5e6b4c5f6b0728a40a288ed4d539bca85cc8ff Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 5 Dec 2012 20:55:05 +0300 Subject: [PATCH] db: pass the return_id to the struct member callbacks I want to have more than one return id per return. So I want to remove the calls to get_return_id(). This patch moves one call from smatch_extra.c and into smatch_db.c. Signed-off-by: Dan Carpenter --- smatch.h | 2 +- smatch_db.c | 6 +++--- smatch_extra.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/smatch.h b/smatch.h index 6052c454..616c2804 100644 --- a/smatch.h +++ b/smatch.h @@ -464,7 +464,7 @@ enum info_type { int get_return_id(void); void add_definition_db_callback(void (*callback)(const char *name, struct symbol *sym, char *key, char *value), int type); void add_member_info_callback(int owner, void (*callback)(char *fn, char *global_static, int param, char *printed_name, struct smatch_state *state)); -void add_returned_member_callback(int owner, void (*callback)(char *return_ranges, char *printed_name, struct smatch_state *state)); +void add_returned_member_callback(int owner, void (*callback)(int return_id, char *return_ranges, char *printed_name, struct smatch_state *state)); void add_db_fn_call_callback(int type, void (*callback)(struct expression *arg, char *value)); struct range_list *db_return_vals(struct expression *expr); diff --git a/smatch_db.c b/smatch_db.c index f461341d..b45264e2 100644 --- a/smatch_db.c +++ b/smatch_db.c @@ -34,7 +34,7 @@ static struct member_info_cb_list *member_callbacks; struct returned_member_callback { int owner; - void (*callback)(char *return_ranges, char *printed_name, struct smatch_state *state); + void (*callback)(int return_id, char *return_ranges, char *printed_name, struct smatch_state *state); }; ALLOCATOR(returned_member_callback, "returned member callbacks"); DECLARE_PTR_LIST(returned_member_cb_list, struct returned_member_callback); @@ -92,7 +92,7 @@ void add_member_info_callback(int owner, void (*callback)(char *fn, char *global add_ptr_list(&member_callbacks, member_callback); } -void add_returned_member_callback(int owner, void (*callback)(char *return_ranges, char *printed_name, struct smatch_state *state)) +void add_returned_member_callback(int owner, void (*callback)(int return_id, char *return_ranges, char *printed_name, struct smatch_state *state)) { struct returned_member_callback *member_callback = __alloc_returned_member_callback(0); @@ -544,7 +544,7 @@ static void print_returned_struct_members(struct expression *expr) if (strncmp(sm->name + len, "->", 2) != 0) continue; strncpy(member_name + 2, sm->name + len, sizeof(member_name) - 2); - cb->callback(return_ranges, member_name, sm->state); + cb->callback(get_return_id(), return_ranges, member_name, sm->state); } END_FOR_EACH_PTR(sm); free_slist(&slist); } END_FOR_EACH_PTR(cb); diff --git a/smatch_extra.c b/smatch_extra.c index d4aa5c56..864d8700 100644 --- a/smatch_extra.c +++ b/smatch_extra.c @@ -1046,11 +1046,11 @@ free: free_string(name); } -static void returned_member_callback(char *return_ranges, char *printed_name, struct smatch_state *state) +static void returned_member_callback(int return_id, char *return_ranges, char *printed_name, struct smatch_state *state) { if (is_whole_range(state)) return; - sm_msg("info: return_value %d '%s' '%s' '%s' %s", get_return_id(), + sm_msg("info: return_value %d '%s' '%s' '%s' %s", return_id, return_ranges, printed_name, state->name, global_static()); } -- 2.11.4.GIT