diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-07-16 22:53:36 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-07-16 22:53:47 +0200 |
| commit | 33381857ff133918a56e3afdded4ac5eefff9f9d (patch) | |
| tree | 2b7f0f13b89451735815ebbdbf0b26f25be7f536 /src/custommem.c | |
| parent | f1abd95ed06e42bf67dd267ddbf506b8b59c399b (diff) | |
| download | box64-33381857ff133918a56e3afdded4ac5eefff9f9d.tar.gz box64-33381857ff133918a56e3afdded4ac5eefff9f9d.zip | |
Change (again) how Wine prereserved memory is allocated and freed
Diffstat (limited to 'src/custommem.c')
| -rw-r--r-- | src/custommem.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/custommem.c b/src/custommem.c index 3f650485..84265816 100644 --- a/src/custommem.c +++ b/src/custommem.c @@ -1338,14 +1338,17 @@ void loadProtectionFromMap() box64_mapclean = 1; } +int isAddrInPrereserve(uintptr_t addr); void freeProtection(uintptr_t addr, size_t size) { size = ALIGN(size); addr &= ~(box64_pagesize-1); dynarec_log(LOG_DEBUG, "freeProtection %p:%p\n", (void*)addr, (void*)(addr+size-1)); LOCK_PROT(); - rb_unset(mapallmem, addr, addr+size); - rb_unset(mmapmem, addr, addr+size); + if(!isAddrInPrereserve(addr)) { + rb_unset(mapallmem, addr, addr+size); + rb_unset(mmapmem, addr, addr+size); + } rb_unset(memprot, addr, addr+size); UNLOCK_PROT(); } |