diff --git a/lib/dns/ecdb.c b/lib/dns/ecdb.c index 1f4b3adc95..6a5a2c90d2 100644 --- a/lib/dns/ecdb.c +++ b/lib/dns/ecdb.c @@ -760,28 +760,30 @@ rdatasetiter_destroy(dns_rdatasetiter_t **iteratorp) { static isc_result_t rdatasetiter_first(dns_rdatasetiter_t *iterator) { + REQUIRE(DNS_RDATASETITER_VALID(iterator)); + ecdb_rdatasetiter_t *ecdbiterator = (ecdb_rdatasetiter_t *)iterator; dns_ecdbnode_t *ecdbnode = (dns_ecdbnode_t *)iterator->node; - REQUIRE(DNS_RDATASETITER_VALID(iterator)); - - if (ISC_LIST_EMPTY(ecdbnode->rdatasets)) + if (ISC_LIST_EMPTY(ecdbnode->rdatasets)) { return (ISC_R_NOMORE); + } ecdbiterator->current = ISC_LIST_HEAD(ecdbnode->rdatasets); return (ISC_R_SUCCESS); } static isc_result_t rdatasetiter_next(dns_rdatasetiter_t *iterator) { - ecdb_rdatasetiter_t *ecdbiterator = (ecdb_rdatasetiter_t *)iterator; - REQUIRE(DNS_RDATASETITER_VALID(iterator)); + ecdb_rdatasetiter_t *ecdbiterator = (ecdb_rdatasetiter_t *)iterator; + ecdbiterator->current = ISC_LIST_NEXT(ecdbiterator->current, link); - if (ecdbiterator->current == NULL) + if (ecdbiterator->current == NULL) { return (ISC_R_NOMORE); - else + } else { return (ISC_R_SUCCESS); + } } static void