diff options
Diffstat (limited to 'loader/ext.c')
-rw-r--r-- | loader/ext.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/loader/ext.c b/loader/ext.c index d542ba687c..ff69e0818f 100644 --- a/loader/ext.c +++ b/loader/ext.c @@ -450,7 +450,7 @@ LPVOID WINAPI VirtualAlloc(LPVOID address, DWORD size, DWORD type, DWORD protec void* answer; int fd=open("/dev/zero", O_RDWR); size=(size+0xffff)&(~0xffff); -// printf("VirtualAlloc(0x%08X, %d)\n", address + //printf("VirtualAlloc(0x%08X, %d)\n", address, size); if(address!=0) { //check whether we can allow to allocate this @@ -481,14 +481,14 @@ LPVOID WINAPI VirtualAlloc(LPVOID address, DWORD size, DWORD type, DWORD protec return NULL; } answer=mmap(address, size, PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_FIXED | MAP_PRIVATE, fd, 0); + MAP_FIXED | MAP_PRIVATE, fd, 0); } else - answer=mmap(address, size, PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_PRIVATE, fd, 0); + answer=mmap(address, size, PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE, fd, 0); // answer=FILE_dommap(-1, address, 0, size, 0, 0, // PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE); - close(fd); + close(fd); if(answer==(void*)-1) { printf("Error no %d\n", errno); @@ -509,13 +509,13 @@ LPVOID WINAPI VirtualAlloc(LPVOID address, DWORD size, DWORD type, DWORD protec vm->next=new_vm; vm=new_vm; vm->next=0; -// if(va_size!=0) -// printf("Multiple VirtualAlloc!\n"); -// printf("answer=0x%08x\n", answer); + //if(va_size!=0) + // printf("Multiple VirtualAlloc!\n"); + //printf("answer=0x%08x\n", answer); return answer; } } -WIN_BOOL WINAPI VirtualFree(LPVOID address, DWORD t1, DWORD t2)//not sure +WIN_BOOL WINAPI VirtualFree(LPVOID address, SIZE_T dwSize, DWORD dwFreeType)//not sure { virt_alloc* str=vm; int answer; @@ -526,10 +526,11 @@ WIN_BOOL WINAPI VirtualFree(LPVOID address, DWORD t1, DWORD t2)//not sure str=str->prev; continue; } + //printf("VirtualFree(0x%08X, %d - %d)\n", str->address, dwSize, str->mapping_size); answer=munmap(str->address, str->mapping_size); if(str->next)str->next->prev=str->prev; if(str->prev)str->prev->next=str->next; - if(vm==str)vm=0; + if(vm==str)vm=str->prev; free(str); return 0; } |