summaryrefslogtreecommitdiff
path: root/mem.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-05-04 21:00:25 -0700
committerMichael Pavone <pavone@retrodev.com>2017-05-04 21:00:25 -0700
commit274dececcc084ba86026d8ac3f18edf915f79f24 (patch)
treec063f307948d8f8cef0a056775bb9c2b6fd3308b /mem.c
parentd9b6185d61f9791e4addda901a2137f253d965dd (diff)
Fix some inconsequential issues in code for executable memory allocation noticed while tracking down a different issue
Diffstat (limited to 'mem.c')
-rw-r--r--mem.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/mem.c b/mem.c
index f3442bf..8f0094b 100644
--- a/mem.c
+++ b/mem.c
@@ -30,8 +30,10 @@ void * alloc_code(size_t *size)
if (ret) {
return ret;
}
- *size += PAGE_SIZE - (*size & (PAGE_SIZE - 1));
- ret = mmap(NULL, *size, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
+ if (*size & (PAGE_SIZE -1)) {
+ *size += PAGE_SIZE - (*size & (PAGE_SIZE - 1));
+ }
+ ret = mmap(next, *size, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
if (ret == MAP_FAILED) {
perror("alloc_code");
return NULL;