It's perfectly fine to call free(NULL). Take advantage of that to simplify the code. Use the safer CONST_CAST way of "unconsting" pointers we pass to free while we're at it.
Signed-off-by: Dumitru Ceara <[email protected]> --- controller/ovn-controller.c | 12 +++--------- controller/pinctrl.c | 5 +---- controller/vif-plug.c | 12 +++--------- lib/expr.c | 22 ++++++++-------------- lib/ovn-parallel-hmap.c | 6 ++---- northd/ipam.c | 2 +- 6 files changed, 18 insertions(+), 41 deletions(-) diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index 760b7788be..8709c1ae2a 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -688,9 +688,7 @@ add_pending_ct_zone_entry(struct shash *pending_ct_zones, */ struct ct_zone_pending_entry *existing = shash_replace(pending_ct_zones, name, pending); - if (existing) { - free(existing); - } + free(existing); } static bool @@ -6099,12 +6097,8 @@ loop_done: ovs_feature_support_destroy(); free(ovs_remote); - if (file_system_id) { - free(file_system_id); - } - if (cli_system_id) { - free(cli_system_id); - } + free(file_system_id); + free(cli_system_id); ovn_exit_args_finish(&exit_args); unixctl_server_destroy(unixctl); service_stop(); diff --git a/controller/pinctrl.c b/controller/pinctrl.c index 5a35d56f6b..12055a6756 100644 --- a/controller/pinctrl.c +++ b/controller/pinctrl.c @@ -1282,10 +1282,7 @@ fill_ipv6_prefix_state(struct ovsdb_idl_txn *ovnsb_idl_txn, struct ipv6_prefixd_state *pfd; if (!smap_get_bool(&pb->options, "ipv6_prefix", false)) { - pfd = shash_find_and_delete(&ipv6_prefixd, pb->logical_port); - if (pfd) { - free(pfd); - } + free(shash_find_and_delete(&ipv6_prefixd, pb->logical_port)); continue; } diff --git a/controller/vif-plug.c b/controller/vif-plug.c index 38348bf544..d4c7552eab 100644 --- a/controller/vif-plug.c +++ b/controller/vif-plug.c @@ -142,15 +142,9 @@ destroy_port_ctx(struct vif_plug_port_ctx *ctx) { smap_destroy(&ctx->vif_plug_port_ctx_in.lport_options); smap_destroy(&ctx->vif_plug_port_ctx_in.iface_options); - if (ctx->vif_plug_port_ctx_in.lport_name) { - free((char *)ctx->vif_plug_port_ctx_in.lport_name); - } - if (ctx->vif_plug_port_ctx_in.iface_name) { - free((char *)ctx->vif_plug_port_ctx_in.iface_name); - } - if (ctx->vif_plug_port_ctx_in.iface_type) { - free((char *)ctx->vif_plug_port_ctx_in.iface_type); - } + free(CONST_CAST(char *, ctx->vif_plug_port_ctx_in.lport_name)); + free(CONST_CAST(char *, ctx->vif_plug_port_ctx_in.iface_name)); + free(CONST_CAST(char *, ctx->vif_plug_port_ctx_in.iface_type)); /* Note that data associated with ctx->vif_plug_port_ctx_out must be * destroyed by the plug provider implementation with a call to * vif_plug_port_ctx_destroy prior to calling this function */ diff --git a/lib/expr.c b/lib/expr.c index f5d2032334..0cb44e1b6f 100644 --- a/lib/expr.c +++ b/lib/expr.c @@ -179,17 +179,13 @@ expr_combine(enum expr_type type, struct expr *a, struct expr *b) } else { ovs_list_push_back(&a->andor, &b->node); } - if (a->as_name) { - free(a->as_name); - a->as_name = NULL; - } + free(a->as_name); + a->as_name = NULL; return a; } else if (b->type == type) { ovs_list_push_front(&b->andor, &a->node); - if (b->as_name) { - free(b->as_name); - b->as_name = NULL; - } + free(b->as_name); + b->as_name = NULL; return b; } else { struct expr *e = expr_create_andor(type); @@ -879,12 +875,10 @@ parse_constant(struct expr_context *ctx, struct expr_constant_set *cs, sizeof *cs->values); } - if (cs->as_name) { - /* Combining other values to the constant set that is tracking an - * address set, so untrack it. */ - free(cs->as_name); - cs->as_name = NULL; - } + /* Combining other values to the constant set that is tracking an + * address set, so untrack it. */ + free(cs->as_name); + cs->as_name = NULL; if (ctx->lexer->token.type == LEX_T_TEMPLATE) { lexer_error(ctx->lexer, "Unexpanded template."); diff --git a/lib/ovn-parallel-hmap.c b/lib/ovn-parallel-hmap.c index a0ba681a1e..1b167e2145 100644 --- a/lib/ovn-parallel-hmap.c +++ b/lib/ovn-parallel-hmap.c @@ -427,10 +427,8 @@ ovn_update_hashrow_locks(struct hmap *lflows, struct hashrow_locks *hrl) { int i; if (hrl->mask != lflows->mask) { - if (hrl->row_locks) { - free(hrl->row_locks); - } - hrl->row_locks = xcalloc(sizeof(struct ovs_mutex), lflows->mask + 1); + hrl->row_locks = xrealloc(hrl->row_locks, + sizeof *hrl->row_locks * (lflows->mask + 1)); hrl->mask = lflows->mask; for (i = 0; i <= lflows->mask; i++) { ovs_mutex_init(&hrl->row_locks[i]); diff --git a/northd/ipam.c b/northd/ipam.c index 68a757098b..4448a76074 100644 --- a/northd/ipam.c +++ b/northd/ipam.c @@ -44,7 +44,7 @@ void destroy_ipam_info(struct ipam_info *info) { bitmap_free(info->allocated_ipv4s); - free((char *) info->id); + free(CONST_CAST(char *, info->id)); } bool -- 2.39.3 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
