mirror of
https://github.com/wiiu-env/MemoryMappingModule.git
synced 2024-11-22 01:39:20 +01:00
The allocated size is now always an integral multiple of alignment.
This commit is contained in:
parent
f513e1a374
commit
79787e7dce
@ -395,9 +395,6 @@ void MemoryMapping_setupMemoryMapping() {
|
||||
OSInitMutex(&allocMutex);
|
||||
}
|
||||
|
||||
#define ROUNDDOWN(val, align) ((val) & ~(align - 1))
|
||||
#define ROUNDUP(val, align) ROUNDDOWN(((val) + (align - 1)), align)
|
||||
|
||||
void *MemoryMapping_allocEx(uint32_t size, int32_t align, bool videoOnly) {
|
||||
OSLockMutex(&allocMutex);
|
||||
void *res = nullptr;
|
||||
@ -414,10 +411,7 @@ void *MemoryMapping_allocEx(uint32_t size, int32_t align, bool videoOnly) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// We round up the size to avoid heap corruption.
|
||||
// FSReadFile expects the buffer size to be a multiple of 0x40
|
||||
// This can remove once all modules/plugins have been updated :)
|
||||
res = MEMAllocFromExpHeapEx(heapHandle, ROUNDUP(size, 0x40), align);
|
||||
res = MEMAllocFromExpHeapEx(heapHandle, (size + align - 1) & ~(align - 1), align);
|
||||
if (res != nullptr) {
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user