void things_release_resource_inst(things_resource_s *res) { if (res != NULL) { if (NULL != res->next) { things_resource_s *p_temp = res->next; things_resource_s *pDel = NULL; while (NULL != p_temp) { pDel = p_temp; p_temp = p_temp->next; release_resource_inst_impl(pDel); pDel = NULL; } } release_resource_inst_impl(res); res = NULL; } }
void release_builder_instance(things_server_builder_s *builder) { if (builder) { // Thread should be terminated first.. if (!g_quit_flag) { builder->deinit_module(builder); } if (builder->res_num > 0) { for (size_t iter = 0; iter < builder->res_num; iter++) { if (builder->gres_arr[iter] != NULL) { /*! Added by st_things for memory Leak fix*/ release_resource_inst_impl(builder->gres_arr[iter]); builder->gres_arr[iter] = NULL; } } } things_free(builder); g_builder = NULL; } }