From ab407b2b6ed084771bc06b64be09e8b3eb8de228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= Date: Thu, 27 Oct 2022 17:33:47 +0000 Subject: [PATCH] Fix handmade_aligned_malloc offset computation. --- Eigen/src/Core/util/Memory.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 8a724ca47..ee52d32d4 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -104,7 +104,7 @@ EIGEN_DEVICE_FUNC inline void* handmade_aligned_malloc(std::size_t size, std::si eigen_assert(alignment >= sizeof(void*) && (alignment & (alignment-1)) == 0 && "Alignment must be at least sizeof(void*) and a power of 2"); void* original = std::malloc(size + alignment); if (original == 0) return 0; - uint8_t offset = alignment - reinterpret_cast(original) & (alignment - 1); + uint8_t offset = alignment - (reinterpret_cast(original) & (alignment - 1)); void* aligned = static_cast(original) + offset; *(static_cast(aligned) - 1) = offset; return aligned; @@ -133,7 +133,7 @@ EIGEN_DEVICE_FUNC inline void* handmade_aligned_realloc(void* ptr, std::size_t s void* original = std::realloc(previous_original, size + alignment); if (original == 0) return 0; if (original != previous_original) { - uint8_t offset = alignment - reinterpret_cast(original) & (alignment - 1); + uint8_t offset = alignment - (reinterpret_cast(original) & (alignment - 1)); void* aligned = static_cast(original) + offset; std::memmove(aligned, ptr, size); *(static_cast(aligned) - 1) = offset;