From: Michał Kępień Date: Thu, 10 May 2018 07:43:38 +0000 (+0200) Subject: Look for the next matching tuple in a separate function X-Git-Tag: v9.13.0~26^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1bd5f61c6016d9402cc970cc90fd4fbff8088c08;p=thirdparty%2Fbind9.git Look for the next matching tuple in a separate function Extract the portion of the do-while loop responsible for finding the next tuple with the same name and type into a separate function to improve code clarity. --- diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 29537d04077..cf954d9869f 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -7288,6 +7288,26 @@ need_nsec_chain(dns_db_t *db, dns_dbversion_t *ver, return (result); } +/*% + * Given a tuple which is part of a diff, return a pointer to the next tuple in + * that diff which has the same name and type (or NULL if no such tuple is + * found). + */ +static dns_difftuple_t * +find_next_matching_tuple(dns_difftuple_t *cur) { + dns_difftuple_t *next = cur; + + while ((next = ISC_LIST_NEXT(next, link)) != NULL) { + if (cur->rdata.type == next->rdata.type && + dns_name_equal(&cur->name, &next->name)) + { + return (next); + } + } + + return (NULL); +} + /*% * Remove all tuples with the same name and type as 'cur' from 'src' and append * them to 'dst'. @@ -7295,11 +7315,7 @@ need_nsec_chain(dns_db_t *db, dns_dbversion_t *ver, static void move_matching_tuples(dns_difftuple_t *cur, dns_diff_t *src, dns_diff_t *dst) { do { - dns_difftuple_t *next = ISC_LIST_NEXT(cur, link); - while (next != NULL && - (cur->rdata.type != next->rdata.type || - !dns_name_equal(&cur->name, &next->name))) - next = ISC_LIST_NEXT(next, link); + dns_difftuple_t *next = find_next_matching_tuple(cur); ISC_LIST_UNLINK(src->tuples, cur, link); dns_diff_appendminimal(dst, &cur); INSIST(cur == NULL);