Print this page
11506 smatch resync


 113 {
 114         return return_stree_stack;
 115 }
 116 
 117 static void free_resources(struct symbol *sym)
 118 {
 119         struct stree *tmp;
 120 
 121         free_stree(&all_return_states);
 122 
 123         FOR_EACH_PTR(return_stree_stack, tmp) {
 124                 free_stree(&tmp);
 125         } END_FOR_EACH_PTR(tmp);
 126         free_stree_stack(&return_stree_stack);
 127 }
 128 
 129 void register_returns_early(int id)
 130 {
 131         RETURN_ID = id;
 132 

 133         add_split_return_callback(match_return);
 134 }
 135 
 136 void register_returns(int id)
 137 {
 138         add_hook(&match_end_func, END_FUNC_HOOK);
 139         add_hook(&match_save_states, INLINE_FN_START);
 140         add_hook(&match_restore_states, INLINE_FN_END);
 141         add_hook(&free_resources, AFTER_FUNC_HOOK);
 142 }


 113 {
 114         return return_stree_stack;
 115 }
 116 
 117 static void free_resources(struct symbol *sym)
 118 {
 119         struct stree *tmp;
 120 
 121         free_stree(&all_return_states);
 122 
 123         FOR_EACH_PTR(return_stree_stack, tmp) {
 124                 free_stree(&tmp);
 125         } END_FOR_EACH_PTR(tmp);
 126         free_stree_stack(&return_stree_stack);
 127 }
 128 
 129 void register_returns_early(int id)
 130 {
 131         RETURN_ID = id;
 132 
 133         set_dynamic_states(RETURN_ID);
 134         add_split_return_callback(match_return);
 135 }
 136 
 137 void register_returns(int id)
 138 {
 139         add_hook(&match_end_func, END_FUNC_HOOK);
 140         add_hook(&match_save_states, INLINE_FN_START);
 141         add_hook(&match_restore_states, INLINE_FN_END);
 142         add_hook(&free_resources, AFTER_FUNC_HOOK);
 143 }