Fix fallback pointer formatting on big endian, take 2

This commit is contained in:
Victor Zverovich 2019-11-29 07:07:08 -08:00
parent b994a0ab13
commit aaf829bfb1

View File

@ -231,7 +231,10 @@ struct fallback_uintptr {
fallback_uintptr() = default; fallback_uintptr() = default;
explicit fallback_uintptr(const void* p) { explicit fallback_uintptr(const void* p) {
*this = bit_cast<fallback_uintptr>(p); *this = bit_cast<fallback_uintptr>(p);
if (is_big_endian()) std::memmove(value, value, sizeof(void*)); if (is_big_endian()) {
for (size_t i = 0, j = sizeof(void*) - 1; i < j; ++i, --j)
std::swap(value[i], value[j]);
}
} }
}; };
#ifdef UINTPTR_MAX #ifdef UINTPTR_MAX