aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2015-03-25 00:39:24 +0200
committernotaz2015-03-25 01:00:53 +0200
commit85f2398236b54db46340dad14330102f281ca4f3 (patch)
tree789aac133277cec9e50fbfded1cfad24a5f7a0f5 /libpcsxcore
parent663fc55992e210a2b0299764bacac3663f32613b (diff)
downloadpcsx_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.c28
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);