From 9a6b924aeb5908aa442749b59775e8052ec9da32 Mon Sep 17 00:00:00 2001 From: Maschell Date: Sun, 13 Feb 2022 13:23:40 +0100 Subject: [PATCH] Fix negative alignments --- source/memory_mapping.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/source/memory_mapping.cpp b/source/memory_mapping.cpp index dd2c109..f7f3201 100644 --- a/source/memory_mapping.cpp +++ b/source/memory_mapping.cpp @@ -1,15 +1,11 @@ #include "memory_mapping.h" #include -#include -#include #include -#include #include #include #include "CThread.h" #include "logger.h" -#include "memory.h" #include #include #include @@ -413,7 +409,15 @@ void *MemoryMapping_allocEx(uint32_t size, int32_t align, bool videoOnly) { continue; } - res = MEMAllocFromExpHeapEx(heapHandle, (size + align - 1) & ~(align - 1), align); + uint32_t allocSize; + if (align > 0) { + allocSize = (size + align - 1) & ~(align - 1); + } else { + uint32_t alignAbs = -align; + allocSize = (size + alignAbs - 1) & ~(alignAbs - 1); + } + + res = MEMAllocFromExpHeapEx(heapHandle, allocSize, align); if (res != nullptr) { break; }