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; }