From 3b8e32c9bbe0d909c34303da0ad36ef0ef5be852 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Fri, 9 Oct 2015 03:11:34 +0200 Subject: Introduce hashes --- pcilib/pci.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'pcilib/pci.c') diff --git a/pcilib/pci.c b/pcilib/pci.c index 0ba5f51..4a0e79c 100644 --- a/pcilib/pci.c +++ b/pcilib/pci.c @@ -365,7 +365,6 @@ char *pcilib_resolve_data_space(pcilib_t *ctx, uintptr_t addr, size_t *size) { void pcilib_close(pcilib_t *ctx) { - int i; pcilib_bar_t bar; if (ctx) { @@ -386,15 +385,6 @@ void pcilib_close(pcilib_t *ctx) { pcilib_free_register_banks(ctx); - if (ctx->register_ctx) { - pcilib_register_t reg; - for (reg = 0; reg < ctx->num_reg; reg++) { - if (ctx->register_ctx[reg].views) - free(ctx->register_ctx[reg].views); - } - free(ctx->register_ctx); - } - if (ctx->event_plugin) pcilib_plugin_close(ctx->event_plugin); @@ -422,15 +412,22 @@ void pcilib_close(pcilib_t *ctx) { if (ctx->pci_cfg_space_fd >= 0) close(ctx->pci_cfg_space_fd); - if (ctx->units); - free(ctx->units); + + if (ctx->units) { + pcilib_clean_units(ctx); + free(ctx->units); + } if (ctx->views) { - for (i = 0; ctx->views[i]; i++) - free(ctx->views[i]); + pcilib_clean_views(ctx); free(ctx->views); } + pcilib_clean_registers(ctx); + + if (ctx->register_ctx) + free(ctx->register_ctx); + if (ctx->registers) free(ctx->registers); -- cgit v1.2.3