diff options
author | notaz | 2015-03-25 00:39:24 +0200 |
---|---|---|
committer | notaz | 2015-03-25 01:00:53 +0200 |
commit | 85f2398236b54db46340dad14330102f281ca4f3 (patch) | |
tree | 789aac133277cec9e50fbfded1cfad24a5f7a0f5 /libpcsxcore | |
parent | 663fc55992e210a2b0299764bacac3663f32613b (diff) | |
download | pcsx_rearmed-85f2398236b54db46340dad14330102f281ca4f3.tar.gz pcsx_rearmed-85f2398236b54db46340dad14330102f281ca4f3.tar.bz2 pcsx_rearmed-85f2398236b54db46340dad14330102f281ca4f3.zip |
psxmem: fix error handling
also bump libpicofe for mmap fix
Diffstat (limited to 'libpcsxcore')
-rw-r--r-- | libpcsxcore/psxmem.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c index 86da68c..6277220 100644 --- a/libpcsxcore/psxmem.c +++ b/libpcsxcore/psxmem.c @@ -49,20 +49,21 @@ void *psxMap(unsigned long addr, size_t size, int is_fixed, retry: if (psxMapHook != NULL) { - ret = psxMapHook(addr, size, is_fixed, tag); - goto out; + ret = psxMapHook(addr, size, 0, tag); + if (ret == NULL) + return NULL; + } + else { + /* avoid MAP_FIXED, it overrides existing mappings.. */ + /* if (is_fixed) + flags |= MAP_FIXED; */ + + req = (void *)addr; + ret = mmap(req, size, PROT_READ | PROT_WRITE, flags, -1, 0); + if (ret == MAP_FAILED) + return NULL; } - /* avoid MAP_FIXED, it overrides existing mappings.. */ - /* if (is_fixed) - flags |= MAP_FIXED; */ - - req = (void *)addr; - ret = mmap(req, size, PROT_READ | PROT_WRITE, flags, -1, 0); - if (ret == MAP_FAILED) - return NULL; - -out: if (addr != 0 && ret != (void *)addr) { SysMessage("psxMap: warning: wanted to map @%08x, got %p\n", addr, ret); @@ -72,8 +73,7 @@ out: return NULL; } - if (ret != NULL && ((addr ^ (long)ret) & 0x00ffffff) - && !tried_to_align) + if (((addr ^ (long)ret) & 0x00ffffff) && !tried_to_align) { psxUnmap(ret, size, tag); |