MemMapper: don't change address on non-reserved mappings

This commit is contained in:
Exverge 2024-08-08 12:18:40 -04:00
parent 6b6a538b3a
commit d73c5895f2
No known key found for this signature in database
GPG key ID: 19AAFC0AC6A9B35A

View file

@ -42,16 +42,15 @@ namespace MemMapper
void* AllocateMemory(void* baseAddr, size_t size, PAGE_PERMISSION permissionFlags, bool fromReservation) void* AllocateMemory(void* baseAddr, size_t size, PAGE_PERMISSION permissionFlags, bool fromReservation)
{ {
uint64 page_size = sysconf(_SC_PAGESIZE);
if ((uint64) baseAddr % page_size != 0)
{
baseAddr = (void*) ((uint64)baseAddr & ~(page_size - 1));
}
void* r; void* r;
if(fromReservation) if(fromReservation)
{ {
if( mprotect(baseAddr, size, GetProt(permissionFlags)) == 0 ) uint64 page_size = sysconf(_SC_PAGESIZE);
void* page = baseAddr;
if ( (uint64) baseAddr % page_size != 0 )
page = (void*) ((uint64)baseAddr & ~(page_size - 1));
if( mprotect(page, size, GetProt(permissionFlags)) == 0 )
r = baseAddr; r = baseAddr;
else else
r = nullptr; r = nullptr;