From 2b8a8314c5879473875b339172b2ef2b7b9b7ff6 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 27 Apr 2024 17:07:33 +0200 Subject: Changed how wine prereserve is handled on box64 --- src/core.c | 2 +- src/tools/wine_tools.c | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/core.c b/src/core.c index 7b94fbd6..25fa9f14 100644 --- a/src/core.c +++ b/src/core.c @@ -1713,7 +1713,7 @@ int initialize(int argc, const char **argv, char** env, x64emu_t** emulator, elf || (strrchr(prog, '/') && !strcmp(strrchr(prog,'/'), "/wine64"))) { const char* prereserve = getenv("WINEPRELOADRESERVE"); printf_log(LOG_INFO, "BOX64: Wine64 detected, WINEPRELOADRESERVE=\"%s\"\n", prereserve?prereserve:""); - if(wine_preloaded) { + if(wine_preloaded || 1) { wine_prereserve(prereserve); } // special case for winedbg, doesn't work anyway diff --git a/src/tools/wine_tools.c b/src/tools/wine_tools.c index 28ddde42..0933325f 100644 --- a/src/tools/wine_tools.c +++ b/src/tools/wine_tools.c @@ -69,12 +69,8 @@ void wine_prereserve(const char* reserve) int idx = 0; while(my_wine_reserve[idx].addr && my_wine_reserve[idx].size) { - void* p = mmap(my_wine_reserve[idx].addr, my_wine_reserve[idx].size, - PROT_NONE, /*MAP_FIXED |*/ MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, -1, 0); - if(p==(void*)-1 || p!=my_wine_reserve[idx].addr) { - printf_log(LOG_NONE, "Warning, prereserve of %p:0x%lx failed (%s)\n", my_wine_reserve[idx].addr, my_wine_reserve[idx].size, strerror(errno)); - if(p!=(void*)-1) - munmap(p, my_wine_reserve[idx].size); + if(!isBlockFree(my_wine_reserve[idx].addr, my_wine_reserve[idx].size)) { + printf_log(LOG_NONE, "Warning, prereserve of %p:0x%lx is not free\n", my_wine_reserve[idx].addr, my_wine_reserve[idx].size); my_wine_reserve[idx].addr = NULL; my_wine_reserve[idx].size = 0; } else { -- cgit 1.4.1