update mmap.c to use ssize_t instead of off_t for 64bit

This commit is contained in:
richinseattle 2023-07-30 00:03:38 -07:00
parent cddb05d5b2
commit 6b6ed3db97
2 changed files with 7 additions and 9 deletions

14
win.c
View File

@ -2,7 +2,6 @@
#include <errno.h>
#include <io.h>
#ifndef FILE_MAP_EXECUTE
#define FILE_MAP_EXECUTE 0x0020
#endif /* FILE_MAP_EXECUTE */
@ -53,10 +52,9 @@ static DWORD __map_mmap_prot_file(const int prot)
return desiredAccess;
}
void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off)
void* mmap(void *addr, size_t len, int prot, int flags, int fildes, ssize_t off)
{
HANDLE fm, h;
void * map = MAP_FAILED;
#ifdef _MSC_VER
@ -64,18 +62,18 @@ void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off)
#pragma warning(disable: 4293)
#endif
const DWORD dwFileOffsetLow = (sizeof(off_t) <= sizeof(DWORD)) ?
const DWORD dwFileOffsetLow = (sizeof(ssize_t) <= sizeof(DWORD)) ?
(DWORD)off : (DWORD)(off & 0xFFFFFFFFL);
const DWORD dwFileOffsetHigh = (sizeof(off_t) <= sizeof(DWORD)) ?
const DWORD dwFileOffsetHigh = (sizeof(ssize_t) <= sizeof(DWORD)) ?
(DWORD)0 : (DWORD)((off >> 32) & 0xFFFFFFFFL);
const DWORD protect = __map_mmap_prot_page(prot);
const DWORD desiredAccess = __map_mmap_prot_file(prot);
const off_t maxSize = off + (off_t)len;
const ssize_t maxSize = off + (ssize_t)len;
const DWORD dwMaxSizeLow = (sizeof(off_t) <= sizeof(DWORD)) ?
const DWORD dwMaxSizeLow = (sizeof(ssize_t) <= sizeof(DWORD)) ?
(DWORD)maxSize : (DWORD)(maxSize & 0xFFFFFFFFL);
const DWORD dwMaxSizeHigh = (sizeof(off_t) <= sizeof(DWORD)) ?
const DWORD dwMaxSizeHigh = (sizeof(ssize_t) <= sizeof(DWORD)) ?
(DWORD)0 : (DWORD)((maxSize >> 32) & 0xFFFFFFFFL);
#ifdef _MSC_VER

2
win.h
View File

@ -53,7 +53,7 @@ extern "C" {
/* Flags for portable clock_gettime call. */
#define CLOCK_REALTIME 0
void* mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);
void* mmap(void *addr, size_t len, int prot, int flags, int fildes, ssize_t off);
int munmap(void *addr, size_t len);
int mprotect(void *addr, size_t len, int prot);
int msync(void *addr, size_t len, int flags);