diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-02-15 12:54:19 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-02-15 12:54:19 -0800 |
commit | cbf1860d73b782e7924e63361df485b31225a26a (patch) | |
tree | a86ce71a399fb8153be1552f08e51c58b2c5b5cf /git-compat-util.h | |
parent | 2f4e87d7777a0bcffa8a7cc3cc52e1e8b2c352ff (diff) | |
parent | 9e2edd66dda418dad751d5eb2e5921e05e57cd30 (diff) | |
download | git-cbf1860d73b782e7924e63361df485b31225a26a.tar.gz |
Merge branch 'rs/swap'
Code clean-up.
* rs/swap:
graph: use SWAP macro
diff: use SWAP macro
use SWAP macro
apply: use SWAP macro
add SWAP macro
Diffstat (limited to 'git-compat-util.h')
-rw-r--r-- | git-compat-util.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/git-compat-util.h b/git-compat-util.h index f46d40e4a4..ef6d560e15 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -527,6 +527,16 @@ static inline int ends_with(const char *str, const char *suffix) return strip_suffix(str, suffix, &len); } +#define SWAP(a, b) do { \ + void *_swap_a_ptr = &(a); \ + void *_swap_b_ptr = &(b); \ + unsigned char _swap_buffer[sizeof(a)]; \ + memcpy(_swap_buffer, _swap_a_ptr, sizeof(a)); \ + memcpy(_swap_a_ptr, _swap_b_ptr, sizeof(a) + \ + BUILD_ASSERT_OR_ZERO(sizeof(a) == sizeof(b))); \ + memcpy(_swap_b_ptr, _swap_buffer, sizeof(a)); \ +} while (0) + #if defined(NO_MMAP) || defined(USE_WIN32_MMAP) #ifndef PROT_READ |