X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldap_queue.h;h=8e13582ed122dce4fffb90a081375a17d7c000c2;hb=a58c01317ca02ef2fee65fd650a5a9f5e04a727c;hp=49787fe070d48de2feb498b900b5d2da4f904361;hpb=be3971d5d2b0cf838629509fff7f168d73dbf708;p=openldap diff --git a/include/ldap_queue.h b/include/ldap_queue.h index 49787fe070..8e13582ed1 100644 --- a/include/ldap_queue.h +++ b/include/ldap_queue.h @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2001-2013 The OpenLDAP Foundation. + * Copyright 2001-2017 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -225,7 +225,7 @@ struct { \ } while (0) #define LDAP_STAILQ_ENTRY_INIT(var, field) { \ - (entry)->field.stqe_next = NULL; \ + (var)->field.stqe_next = NULL; \ } #define LDAP_STAILQ_FIRST(head) ((head)->stqh_first) @@ -384,26 +384,20 @@ struct { \ #define LDAP_TAILQ_FOREACH(var, head, field) \ for (var = LDAP_TAILQ_FIRST(head); var; var = LDAP_TAILQ_NEXT(var, field)) -#define LDAP_TAILQ_FOREACH_REVERSE(var, head, type, field) \ - for ((var) = LDAP_TAILQ_LAST((head), type, field); \ +#define LDAP_TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = LDAP_TAILQ_LAST((head), headname); \ (var); \ - (var) = LDAP_TAILQ_PREV((var), head, type, field)) + (var) = LDAP_TAILQ_PREV((var), headname, field)) #define LDAP_TAILQ_FIRST(head) ((head)->tqh_first) -#define LDAP_TAILQ_LAST(head, type, field) \ - (LDAP_TAILQ_EMPTY(head) ? \ - NULL : \ - ((struct type *) \ - ((char *)((head)->tqh_last) - offsetof(struct type, field)))) +#define LDAP_TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) #define LDAP_TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) -#define LDAP_TAILQ_PREV(elm, head, type, field) \ - ((struct type *)((elm)->field.tqe_prev) == LDAP_TAILQ_FIRST(head) ? \ - NULL : \ - ((struct type *) \ - ((char *)((elm)->field.tqe_prev) - offsetof(struct type, field)))) +#define LDAP_TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) #define LDAP_TAILQ_INIT(head) do { \ (head)->tqh_first = NULL; \