about summary refs log tree commit diff stats
path: root/src/libtools/threads32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtools/threads32.c')
-rwxr-xr-xsrc/libtools/threads32.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libtools/threads32.c b/src/libtools/threads32.c
index 92e31240..318db0d2 100755
--- a/src/libtools/threads32.c
+++ b/src/libtools/threads32.c
@@ -206,12 +206,16 @@ EXPORT int my32_pthread_create(x64emu_t *emu, void* t, void* attr, void* start_r
 	}
 	if(!stack) {
 		//stack = malloc(stacksize);
-		stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, -1, 0);
+		stack = box_mmap(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, -1, 0);
+		setProtection_stack((uintptr_t)stack, stacksize, PROT_READ|PROT_WRITE);
 		own = 1;
 	}
 
 	if((uintptr_t)stack>=0x100000000LL) {
-		if(own) munmap(stack, stacksize);
+		if(own) {
+			box_munmap(stack, stacksize);
+			freeProtection((uintptr_t)stack, stacksize);
+		}
 		return EAGAIN;
 	}