2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-31 06:15:37 +00:00

Back out he XOR swap trick, it is slower than a temp variable on

modern CPUs.
This commit is contained in:
Todd C. Miller
2007-08-24 00:28:57 +00:00
parent eb4b7b2e6b
commit b63a4c9db0

View File

@@ -146,13 +146,12 @@ struct defaults {
/*
* Append one queue (or single entry) to another using the
* circular properties of the prev pointer to simplify the logic.
* We use XOR to swap the two prev pointers to avoid a temp variable.
*/
#define LIST_APPEND(h, e) do { \
void *_tail = (e)->prev; \
(h)->prev->next = (e); \
(long)(e)->prev ^= (long)(h)->prev; \
(long)(h)->prev ^= (long)(e)->prev; \
(long)(e)->prev ^= (long)(h)->prev; \
(e)->prev = (h)->prev; \
(h)->prev = _tail; \
} while (0)
/*