Example #1
0
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;
	}
}