]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add dns_rdataset_cleanup() that conditionally disassociate rdataset
authorOndřej Surý <ondrej@isc.org>
Wed, 17 Dec 2025 05:59:33 +0000 (06:59 +0100)
committerOndřej Surý <ondrej@isc.org>
Wed, 17 Dec 2025 14:19:55 +0000 (15:19 +0100)
We had a common pattern in the code that looks like this:

if (dns_rdataset_isassociated(rdataset)) {
dns_rdataset_disassociate(rdataset);
}

add a helper macro that checks for rdataset != NULL and the above
called dns_rdataset_cleanup(rdataset).

lib/dns/include/dns/rdataset.h

index 49b8a9e1a37de398eb408f7f0ab1d4e4619a11b6..17f5eff088d21c5e69135b66486165f21e3d96e9 100644 (file)
@@ -285,6 +285,10 @@ dns_rdataset_invalidate(dns_rdataset_t *rdataset);
  *     without initializing it will cause an assertion failure.
  */
 
+#define dns_rdataset_cleanup(rdataset)                                 \
+       if (rdataset != NULL && dns_rdataset_isassociated(rdataset)) { \
+               dns__rdataset_disassociate(rdataset DNS__DB_FILELINE); \
+       }
 #define dns_rdataset_disassociate(rdataset) \
        dns__rdataset_disassociate(rdataset DNS__DB_FILELINE)
 void