This commits removes superfluous checks when using the isc_refcount API.
Examples of superfluous checks:
1. The isc_refcount_decrement function ensures there was not underflow,
so this check is superfluous:
INSIST(isc_refcount_decrement(&r) > 0);
2 .The isc_refcount_destroy() includes check whether the counter
is zero, therefore this is superfluous:
INSIST(isc_refcount_decrement(&r) == 1 && isc_refcount_destroy(&r));
rbtdb->next_serial = 2;
rbtdb->current_version = allocate_version(mctx, 1, 1, false);
if (rbtdb->current_version == NULL) {
- INSIST(isc_refcount_decrement(&rbtdb->references) > 0);
+ isc_refcount_decrement(&rbtdb->references);
free_rbtdb(rbtdb, false, NULL);
return (ISC_R_NOMEMORY);
}
isc_mem_put(mctx, rbtdb->current_version,
sizeof(*rbtdb->current_version));
rbtdb->current_version = NULL;
- INSIST(isc_refcount_decrement(&rbtdb->references) > 0);
+ isc_refcount_decrement(&rbtdb->references);
free_rbtdb(rbtdb, false, NULL);
return (result);
}
dns_rbt_destroy(&zones->rbt);
cleanup_rbt:
- INSIST(isc_refcount_decrement(&zones->irefs) == 1);
+ isc_refcount_decrement(&zones->irefs);
isc_refcount_destroy(&zones->irefs);
- INSIST(isc_refcount_decrement(&zones->refs) == 1);
+ isc_refcount_decrement(&zones->refs);
isc_refcount_destroy(&zones->refs);
isc_mutex_destroy(&zones->maint_lock);
isc_timer_detach(&zone->updatetimer);
cleanup_timer:
- INSIST(isc_refcount_decrement(&zone->refs) > 0);
+ isc_refcount_decrement(&zone->refs);
isc_refcount_destroy(&zone->refs);
isc_mem_put(rpzs->mctx, zone, sizeof(*zone));
cleanup_refs:
tkey->magic = 0;
while (refs-- > 0) {
- INSIST(isc_refcount_decrement(&tkey->refs) > 0);
+ isc_refcount_decrement(&tkey->refs);
}
isc_refcount_destroy(&tkey->refs);
return (ISC_R_SUCCESS);
free_refs:
- INSIST(isc_refcount_decrement(&zone->erefs) > 0);
+ isc_refcount_decrement(&zone->erefs);
isc_refcount_destroy(&zone->erefs);
isc_refcount_destroy(&zone->irefs);
dns_include_t *include;
REQUIRE(DNS_ZONE_VALID(zone));
- REQUIRE(isc_refcount_current(&zone->erefs) == 0);
- REQUIRE(isc_refcount_current(&zone->irefs) == 0);
+ isc_refcount_destroy(&zone->erefs);
+ isc_refcount_destroy(&zone->irefs);
REQUIRE(!LOCKED_ZONE(zone));
REQUIRE(zone->timer == NULL);
REQUIRE(zone->zmgr == NULL);
void
dns_zone_iattach(dns_zone_t *source, dns_zone_t **target) {
REQUIRE(DNS_ZONE_VALID(source));
- REQUIRE(target != NULL && *target == NULL);
+
LOCK_ZONE(source);
zone_iattach(source, target);
UNLOCK_ZONE(source);
static void
zone_iattach(dns_zone_t *source, dns_zone_t **target) {
-
- /*
- * 'source' locked by caller.
- */
REQUIRE(DNS_ZONE_VALID(source));
REQUIRE(LOCKED_ZONE(source));
REQUIRE(target != NULL && *target == NULL);
*target = source;
}
+
static void
zone_idetach(dns_zone_t **zonep) {
dns_zone_t *zone;
* 'zone' locked by caller.
*/
REQUIRE(zonep != NULL && DNS_ZONE_VALID(*zonep));
- zone = *zonep;
REQUIRE(LOCKED_ZONE(*zonep));
+
+ zone = *zonep;
*zonep = NULL;
INSIST(isc_refcount_decrement(&zone->irefs) - 1 +
bool free_needed;
REQUIRE(zonep != NULL && DNS_ZONE_VALID(*zonep));
+
zone = *zonep;
*zonep = NULL;
REQUIRE(VALID_CONTEXT(ctx));
#if ISC_MEM_TRACKLINES
- if (isc_refcount_decrement(&ctx->references) != 1) {
+ if (isc_refcount_decrement(&ctx->references) > 1) {
print_active(ctx, stderr);
}
#else
- INSIST(isc_refcount_decrement(&ctx->references) == 1);
+ isc_refcount_decrement(&ctx->references);
#endif
isc_refcount_destroy(&ctx->references);
destroy(ctx);
isc__socket_t *sock = *socketp;
INSIST(VALID_SOCKET(sock));
- INSIST(isc_refcount_current(&sock->references) == 0);
+ isc_refcount_destroy(&sock->references);
LOCK(&sock->lock);
INSIST(!sock->connecting);
INSIST(ISC_LIST_EMPTY(sock->recv_list));
void
ns_interfacemgr_attach(ns_interfacemgr_t *source, ns_interfacemgr_t **target) {
REQUIRE(NS_INTERFACEMGR_VALID(source));
- INSIST(isc_refcount_increment(&source->references) > 0);
+ isc_refcount_increment(&source->references);
*target = source;
}