]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Replace (void *)-1 with ISC_LINK_TOMBSTONE
authorOndřej Surý <ondrej@isc.org>
Tue, 18 Oct 2022 09:28:03 +0000 (11:28 +0200)
committerOndřej Surý <ondrej@isc.org>
Tue, 18 Oct 2022 09:36:15 +0000 (11:36 +0200)
Instead of having "arbitrary" (void *)-1 to define non-linked, add a
ISC_LINK_TOMBSTONE(type) macro that replaces the "magic" value with a
define.

lib/isc/include/isc/list.h

index 007cec0f30d6427b63d654e13a677e0ce01e9362..2cf4437542dfa41031647966b3df99237427ee77 100644 (file)
 
 #include <isc/assertions.h>
 
+#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
+
 #define ISC_LIST_INITIALIZER                \
        {                                   \
                .head = NULL, .tail = NULL, \
        }
-#define ISC_LINK_INITIALIZER_TYPE(type)                 \
-       {                                               \
-               .prev = (type *)-1, .next = (type *)-1, \
+#define ISC_LINK_INITIALIZER_TYPE(type)           \
+       {                                         \
+               .prev = ISC_LINK_TOMBSTONE(type), \
+               .next = ISC_LINK_TOMBSTONE(type), \
        }
 #define ISC_LINK_INITIALIZER ISC_LINK_INITIALIZER_TYPE(void)
 
        struct {                   \
                type *prev, *next; \
        }
-#define ISC_LINK_INIT_TYPE(elt, link, type)      \
-       do {                                     \
-               (elt)->link.prev = (type *)(-1); \
-               (elt)->link.next = (type *)(-1); \
+#define ISC_LINK_INIT_TYPE(elt, link, type)                  \
+       do {                                                 \
+               (elt)->link.prev = ISC_LINK_TOMBSTONE(type); \
+               (elt)->link.next = ISC_LINK_TOMBSTONE(type); \
        } while (0)
-#define ISC_LINK_INIT(elt, link)   ISC_LINK_INIT_TYPE(elt, link, void)
-#define ISC_LINK_LINKED(elt, link) ((void *)((elt)->link.prev) != (void *)(-1))
+#define ISC_LINK_INIT(elt, link) ISC_LINK_INIT_TYPE(elt, link, void)
+#define ISC_LINK_LINKED_TYPE(elt, link, type) \
+       ((type *)((elt)->link.prev) != ISC_LINK_TOMBSTONE(type))
+#define ISC_LINK_LINKED(elt, link) ISC_LINK_LINKED_TYPE(elt, link, void)
 
 #define ISC_LIST_HEAD(list)  ((list).head)
 #define ISC_LIST_TAIL(list)  ((list).tail)
                        ISC_INSIST((list).head == (elt));               \
                        (list).head = (elt)->link.next;                 \
                }                                                       \
-               (elt)->link.prev = (type *)(-1);                        \
-               (elt)->link.next = (type *)(-1);                        \
+               (elt)->link.prev = ISC_LINK_TOMBSTONE(type);            \
+               (elt)->link.next = ISC_LINK_TOMBSTONE(type);            \
                ISC_INSIST((list).head != (elt));                       \
                ISC_INSIST((list).tail != (elt));                       \
        } while (0)