diff options
author | Tom Gundersen <teg@jklm.no> | 2015-10-09 20:47:34 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2015-10-11 15:04:16 +0200 |
commit | 957325b7637a4d3a16a3cea5e2c6b36faa0e1be7 (patch) | |
tree | 9bc931b069e40b28c2e753e2194e576f687826eb | |
parent | 5c416fc40818ee271c4ae89909e7780382aa39bb (diff) |
networkd: link - refactor (un)ref
-rw-r--r-- | src/network/networkd-link.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index eebefda2e1..6c35cafbf5 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -336,15 +336,28 @@ static void link_free(Link *link) { } Link *link_unref(Link *link) { - if (link && (-- link->n_ref <= 0)) - link_free(link); + if (!link) + return NULL; + + assert(link->n_ref > 0); + + link->n_ref --; + + if (link->n_ref > 0) + return NULL; + + link_free(link); return NULL; } Link *link_ref(Link *link) { - if (link) - assert_se(++ link->n_ref >= 2); + if (!link) + return NULL; + + assert(link->n_ref > 0); + + link->n_ref ++; return link; } |