diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-06-10 15:07:13 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2016-06-15 13:26:32 +0200 |
commit | 46b887ca6b0382d135599a83ed0884aeaf97a357 (patch) | |
tree | 7e252be40ff5ba4b7978bc19228714cfef33df4d /src/set_elem.c | |
parent | 5b8ae79fae3bc8be9663bd752c7ec466a95ac180 (diff) |
src: simplify unsetters
If the attribute is set as we already check at the beginning of this
function, then we can release the object.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/set_elem.c')
-rw-r--r-- | src/set_elem.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/set_elem.c b/src/set_elem.c index 1c8ea2b..b27e5a3 100644 --- a/src/set_elem.c +++ b/src/set_elem.c @@ -66,14 +66,12 @@ EXPORT_SYMBOL_ALIAS(nftnl_set_elem_is_set, nft_set_elem_attr_is_set); void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr) { + if (!(s->flags & (1 << attr))) + return; + switch (attr) { case NFTNL_SET_ELEM_CHAIN: - if (s->flags & (1 << NFTNL_SET_ELEM_CHAIN)) { - if (s->data.chain) { - xfree(s->data.chain); - s->data.chain = NULL; - } - } + xfree(s->data.chain); break; case NFTNL_SET_ELEM_FLAGS: case NFTNL_SET_ELEM_KEY: /* NFTA_SET_ELEM_KEY */ @@ -86,10 +84,7 @@ void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr) xfree(s->user.data); break; case NFTNL_SET_ELEM_EXPR: - if (s->flags & (1 << NFTNL_SET_ELEM_EXPR)) { - nftnl_expr_free(s->expr); - s->expr = NULL; - } + nftnl_expr_free(s->expr); break; default: return; |