* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: rbtdb.c,v 1.197 2004/05/05 01:32:58 marka Exp $ */
+/* $Id: rbtdb.c,v 1.198 2004/05/14 01:05:53 marka Exp $ */
/*
* Principal Author: Bob Halley
dns_rbtnode_t *node = (dns_rbtnode_t *)source;
REQUIRE(VALID_RBTDB(rbtdb));
+ REQUIRE(targetp != NULL && *targetp == NULL);
LOCK(&rbtdb->node_locks[node->locknum].lock);
INSIST(node->references > 0);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
noqname = isc_mem_get(mctx, sizeof(*noqname));
- if (noqname == NULL)
- return (ISC_R_NOMEMORY);
+ if (noqname == NULL) {
+ result = ISC_R_NOMEMORY;
+ goto cleanup;
+ }
dns_name_init(&noqname->name, NULL);
noqname->nsec = NULL;
noqname->nsecsig = NULL;
return (ISC_R_SUCCESS);
cleanup:
+ dns_rdataset_disassociate(&nsec);
+ dns_rdataset_disassociate(&nsecsig);
free_noqname(mctx, &noqname);
return(result);
}
rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target) {
dns_db_t *db = source->private1;
dns_dbnode_t *node = source->private2;
- dns_dbnode_t *cloned_node;
+ dns_dbnode_t *cloned_node = NULL;
attachnode(db, node, &cloned_node);
*target = *source;
dns_dbnode_t *cloned_node;
struct noqname *noqname = rdataset->private6;
+ cloned_node = NULL;
attachnode(db, node, &cloned_node);
- attachnode(db, node, &cloned_node);
-
nsec->methods = &rdataset_methods;
nsec->rdclass = db->rdclass;
nsec->type = dns_rdatatype_nsec;
nsec->private5 = NULL;
nsec->private6 = NULL;
+ cloned_node = NULL;
+ attachnode(db, node, &cloned_node);
nsecsig->methods = &rdataset_methods;
nsecsig->rdclass = db->rdclass;
nsecsig->type = dns_rdatatype_rrsig;
return (ISC_R_SUCCESS);
}
-
/*
* Rdataset Iterator Methods
*/