From: Frank Denis Date: Mon, 3 May 2010 15:37:16 +0000 (-0400) Subject: Fix nonstandard TAILQ_FOREACH_REVERSE() definition X-Git-Tag: release-2.0.5-beta~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71afc525804f416cfaabf4ec253f725fe3ec6822;p=libevent Fix nonstandard TAILQ_FOREACH_REVERSE() definition Every current BSD system providing TAILQ_* macros define TAILQ_FOREACH_REVERSE in this order: TAILQ_FOREACH_REVERSE(var, head, field, headname) However, libevent defines it in another order: TAILQ_FOREACH_REVERSE(var, head, headname, field) Here's a trivial patch to have libevent compatible with stock queue.h headers. -Frank. [From sourceforge patch 2995179. codesearch.google.com confirms that the only people defining TAILQ_FOREACH_REVERSE our way are people using it in a compatibility header like us. Did we copy this from OpenSSH or something?] -Nick --- diff --git a/compat/sys/queue.h b/compat/sys/queue.h index 7bb87c29..53dd10d9 100644 --- a/compat/sys/queue.h +++ b/compat/sys/queue.h @@ -306,7 +306,7 @@ struct { \ (var) != TAILQ_END(head); \ (var) = TAILQ_NEXT(var, field)) -#define TAILQ_FOREACH_REVERSE(var, head, field, headname) \ +#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ for((var) = TAILQ_LAST(head, headname); \ (var) != TAILQ_END(head); \ (var) = TAILQ_PREV(var, headname, field)) diff --git a/event.c b/event.c index cfd2db9f..cfa0cbfe 100644 --- a/event.c +++ b/event.c @@ -2361,7 +2361,7 @@ insert_common_timeout_inorder(struct common_timeout_list *ctl, * the end of 'ev' to find the right insertion point. */ TAILQ_FOREACH_REVERSE(e, &ctl->events, - ev_timeout_pos.ev_next_with_common_timeout, event_list) { + event_list, ev_timeout_pos.ev_next_with_common_timeout) { /* This timercmp is a little sneaky, since both ev and e have * magic values in tv_usec. Fortunately, they ought to have * the _same_ magic values in tv_usec. Let's assert for that.