diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-12-25 10:01:04 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-12-25 10:01:04 +0100 |
| commit | 7fcc0ba8a478be8a6169191e505ac66e30c646e8 (patch) | |
| tree | b5b019ddf3b13af18326cc590e8552ab3792e4a1 /src | |
| parent | 6773ac88afa2c21974a0e1ac7488e5b2a472bb26 (diff) | |
| download | box64-7fcc0ba8a478be8a6169191e505ac66e30c646e8.tar.gz box64-7fcc0ba8a478be8a6169191e505ac66e30c646e8.zip | |
New attempts at mmap fixing
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/wrappedlibc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index fe9d60db..9dbd6e04 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2603,7 +2603,7 @@ EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot if(new_flags&(MAP_FIXED|MAP_FIXED_NOREPLACE)==(MAP_FIXED|MAP_FIXED_NOREPLACE)) new_flags&=~MAP_FIXED_NOREPLACE; ret = mmap64(addr, length, prot, new_flags, fd, offset); printf_log(LOG_DEBUG, " tried again with %p, got %p\n", addr, ret); - if(old_addr && ret!=old_addr) + if(old_addr && ret!=old_addr && ret!=MAP_FAILED) errno = olderr; } else if((ret!=MAP_FAILED) && !(flags&MAP_FIXED) && (box64_wine) && (old_addr) && (addr!=ret) && (((uintptr_t)ret>0x7fffffffffffLL) || ((uintptr_t)ret&~0xffff))) { @@ -2616,7 +2616,7 @@ EXPORT void* my_mmap64(x64emu_t* emu, void *addr, unsigned long length, int prot if(new_flags&(MAP_FIXED|MAP_FIXED_NOREPLACE)==(MAP_FIXED|MAP_FIXED_NOREPLACE)) new_flags&=~MAP_FIXED_NOREPLACE; ret = mmap64(addr, length, prot, new_flags, fd, offset); printf_log(LOG_DEBUG, " tried again with %p, got %p\n", addr, ret); - if(old_addr && ret!=old_addr) { + if(old_addr && ret!=old_addr && ret!=MAP_FAILED) { errno = olderr; if(old_addr>(void*)0x7fffffffff && !have48bits) errno = EEXIST; |