From: Tom Gundersen Date: Fri, 9 Oct 2015 18:47:34 +0000 (+0200) Subject: networkd: link - refactor (un)ref X-Git-Tag: v228~206^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=957325b7637a4d3a16a3cea5e2c6b36faa0e1be7;p=thirdparty%2Fsystemd.git networkd: link - refactor (un)ref --- diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index eebefda2e13..6c35cafbf50 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; }