From 52b2cca667f57f3c5e431bea05fc623768400ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Thu, 15 Feb 2018 19:14:26 -0800 Subject: [PATCH] Fixed minimum alignment requirement. --- include/bx/inline/allocator.inl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/include/bx/inline/allocator.inl b/include/bx/inline/allocator.inl index 2c602b3..1ff5f64 100644 --- a/include/bx/inline/allocator.inl +++ b/include/bx/inline/allocator.inl @@ -57,9 +57,10 @@ namespace bx inline void* alignedAlloc(AllocatorI* _allocator, size_t _size, size_t _align, const char* _file, uint32_t _line) { - size_t total = _size + _align; + const size_t align = max(_align, sizeof(uint32_t) );; + const size_t total = _size + align; uint8_t* ptr = (uint8_t*)alloc(_allocator, total, 0, _file, _line); - uint8_t* aligned = (uint8_t*)alignPtr(ptr, sizeof(uint32_t), _align); + uint8_t* aligned = (uint8_t*)alignPtr(ptr, sizeof(uint32_t), align); uint32_t* header = (uint32_t*)aligned - 1; *header = uint32_t(aligned - ptr); return aligned; @@ -84,9 +85,11 @@ namespace bx uint8_t* aligned = (uint8_t*)_ptr; uint32_t offset = *( (uint32_t*)aligned - 1); uint8_t* ptr = aligned - offset; - size_t total = _size + _align; + + const size_t align = max(_align, sizeof(uint32_t) );; + const size_t total = _size + align; ptr = (uint8_t*)realloc(_allocator, ptr, total, 0, _file, _line); - uint8_t* newAligned = (uint8_t*)alignPtr(ptr, sizeof(uint32_t), _align); + uint8_t* newAligned = (uint8_t*)alignPtr(ptr, sizeof(uint32_t), align); if (newAligned == aligned) {