X-Git-Url: https://git.tcpdump.org/libpcap/blobdiff_plain/2e9d0ae34ece4d6f67f4d66a4c3628febf0b13dd..3a48c915ea98a60fbac94522202279f56c740487:/optimize.c diff --git a/optimize.c b/optimize.c index 4afd063f..931655cd 100644 --- a/optimize.c +++ b/optimize.c @@ -2051,12 +2051,18 @@ intern_blocks(opt_state_t *opt_state, struct icode *ic) static void opt_cleanup(opt_state_t *opt_state) { - free((void *)opt_state->vnode_base); - free((void *)opt_state->vmap); - free((void *)opt_state->edges); - free((void *)opt_state->space); - free((void *)opt_state->levels); - free((void *)opt_state->blocks); + if (opt_state->vnode_base) + free((void *)opt_state->vnode_base); + if (opt_state->vmap) + free((void *)opt_state->vmap); + if (opt_state->edges) + free((void *)opt_state->edges); + if (opt_state->space) + free((void *)opt_state->space); + if (opt_state->levels) + free((void *)opt_state->levels); + if (opt_state->blocks) + free((void *)opt_state->blocks); } /* @@ -2183,6 +2189,7 @@ opt_init(opt_state_t *opt_state, struct icode *ic) opt_state->edges = (struct edge **)calloc(opt_state->n_edges, sizeof(*opt_state->edges)); if (opt_state->edges == NULL) { free(opt_state->blocks); + opt_state->blocks = NULL; opt_error(opt_state, "malloc"); } @@ -2193,6 +2200,8 @@ opt_init(opt_state_t *opt_state, struct icode *ic) if (opt_state->levels == NULL) { free(opt_state->edges); free(opt_state->blocks); + opt_state->edges = NULL; + opt_state->blocks = NULL; opt_error(opt_state, "malloc"); } @@ -2206,6 +2215,9 @@ opt_init(opt_state_t *opt_state, struct icode *ic) free(opt_state->levels); free(opt_state->edges); free(opt_state->blocks); + opt_state->levels = NULL; + opt_state->edges = NULL; + opt_state->blocks = NULL; opt_error(opt_state, "malloc"); } p = opt_state->space; @@ -2249,6 +2261,10 @@ opt_init(opt_state_t *opt_state, struct icode *ic) free(opt_state->levels); free(opt_state->edges); free(opt_state->blocks); + opt_state->space = NULL; + opt_state->levels = NULL; + opt_state->edges = NULL; + opt_state->blocks = NULL; opt_error(opt_state, "malloc"); } opt_state->vnode_base = (struct valnode *)calloc(opt_state->maxval, sizeof(*opt_state->vnode_base)); @@ -2258,6 +2274,11 @@ opt_init(opt_state_t *opt_state, struct icode *ic) free(opt_state->levels); free(opt_state->edges); free(opt_state->blocks); + opt_state->vmap = NULL; + opt_state->space = NULL; + opt_state->levels = NULL; + opt_state->edges = NULL; + opt_state->blocks = NULL; opt_error(opt_state, "malloc"); } }