]> granicus.if.org Git - libevent/commitdiff
Fix nonstandard TAILQ_FOREACH_REVERSE() definition
authorFrank Denis <chrysalis@users.sourceforge.net>
Mon, 3 May 2010 15:37:16 +0000 (11:37 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 3 May 2010 15:40:09 +0000 (11:40 -0400)
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

compat/sys/queue.h
event.c

index 7bb87c2940e25dbdbc36b00cf9b1172b1b711b2f..53dd10d96e3109634a3e7783b1b3c9190fd585a5 100644 (file)
@@ -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 cfd2db9f291d304538c8749ff303fadd9ff872a8..cfa0cbfe7721236c044cdf60665479d2c36db971 100644 (file)
--- 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.