ITS#9017 LMDB: fix off_t usage on Windows

mdb.master
Howard Chu 5 years ago
parent 147582b5dc
commit b77c2ba72a
  1. 16
      libraries/liblmdb/mdb.c

@ -96,6 +96,7 @@ static NtCloseFunc *NtClose;
# define SSIZE_MAX INT_MAX # define SSIZE_MAX INT_MAX
# endif # endif
#endif #endif
#define MDB_OFF_T LARGE_INTEGER
#else #else
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -108,6 +109,7 @@ static NtCloseFunc *NtClose;
#include <sys/file.h> #include <sys/file.h>
#endif #endif
#include <fcntl.h> #include <fcntl.h>
#define MDB_OFF_T off_t
#endif #endif
#if defined(__mips) && defined(__linux) #if defined(__mips) && defined(__linux)
@ -1493,7 +1495,7 @@ struct MDB_env {
MDB_txn *me_txn; /**< current write transaction */ MDB_txn *me_txn; /**< current write transaction */
MDB_txn *me_txn0; /**< prealloc'd write transaction */ MDB_txn *me_txn0; /**< prealloc'd write transaction */
mdb_size_t me_mapsize; /**< size of the data memory map */ mdb_size_t me_mapsize; /**< size of the data memory map */
off_t me_size; /**< current file size */ MDB_OFF_T me_size; /**< current file size */
pgno_t me_maxpg; /**< me_mapsize / me_psize */ pgno_t me_maxpg; /**< me_mapsize / me_psize */
MDB_dbx *me_dbxs; /**< array of static DB info */ MDB_dbx *me_dbxs; /**< array of static DB info */
uint16_t *me_dbflags; /**< array of flags from MDB_db.md_flags */ uint16_t *me_dbflags; /**< array of flags from MDB_db.md_flags */
@ -3662,7 +3664,7 @@ mdb_page_flush(MDB_txn *txn, int keep)
unsigned psize = env->me_psize, j; unsigned psize = env->me_psize, j;
int i, pagecount = dl[0].mid, rc; int i, pagecount = dl[0].mid, rc;
size_t size = 0; size_t size = 0;
off_t pos = 0; MDB_OFF_T pos = 0;
pgno_t pgno = 0; pgno_t pgno = 0;
MDB_page *dp = NULL; MDB_page *dp = NULL;
#ifdef _WIN32 #ifdef _WIN32
@ -3675,7 +3677,7 @@ mdb_page_flush(MDB_txn *txn, int keep)
HANDLE fd = env->me_fd; HANDLE fd = env->me_fd;
#endif #endif
ssize_t wsize = 0, wres; ssize_t wsize = 0, wres;
off_t wpos = 0, next_pos = 1; /* impossible pos, so pos != next_pos */ MDB_OFF_T wpos = 0, next_pos = 1; /* impossible pos, so pos != next_pos */
int n = 0; int n = 0;
j = i = keep; j = i = keep;
@ -4269,7 +4271,7 @@ mdb_env_write_meta(MDB_txn *txn)
MDB_meta meta, metab, *mp; MDB_meta meta, metab, *mp;
unsigned flags; unsigned flags;
mdb_size_t mapsize; mdb_size_t mapsize;
off_t off; MDB_OFF_T off;
int rc, len, toggle; int rc, len, toggle;
char *ptr; char *ptr;
HANDLE mfd; HANDLE mfd;
@ -5277,7 +5279,7 @@ mdb_env_setup_locks(MDB_env *env, MDB_name *fname, int mode, int *excl)
union semun semu; union semun semu;
#endif #endif
int rc; int rc;
off_t size, rsize; MDB_OFF_T size, rsize;
rc = mdb_fopen(env, fname, MDB_O_LOCKS, mode, &env->me_lfd); rc = mdb_fopen(env, fname, MDB_O_LOCKS, mode, &env->me_lfd);
if (rc) { if (rc) {
@ -6139,7 +6141,7 @@ mdb_rpage_get(MDB_txn *txn, pgno_t pg0, MDB_page **ret)
pgno_t pgno; pgno_t pgno;
int rc, retries = 1; int rc, retries = 1;
#ifdef _WIN32 #ifdef _WIN32
LARGE_INTEGER off; MDB_OFF_T off;
SIZE_T len; SIZE_T len;
#define SET_OFF(off,val) off.QuadPart = val #define SET_OFF(off,val) off.QuadPart = val
#define MAP(rc,env,addr,len,off) \ #define MAP(rc,env,addr,len,off) \
@ -6148,7 +6150,7 @@ mdb_rpage_get(MDB_txn *txn, pgno_t pg0, MDB_page **ret)
len, &off, &len, ViewUnmap, (env->me_flags & MDB_RDONLY) ? 0 : MEM_RESERVE, PAGE_READONLY); \ len, &off, &len, ViewUnmap, (env->me_flags & MDB_RDONLY) ? 0 : MEM_RESERVE, PAGE_READONLY); \
if (rc) rc = mdb_nt2win32(rc) if (rc) rc = mdb_nt2win32(rc)
#else #else
off_t off; MDB_OFF_T off;
size_t len; size_t len;
#define SET_OFF(off,val) off = val #define SET_OFF(off,val) off = val
#define MAP(rc,env,addr,len,off) \ #define MAP(rc,env,addr,len,off) \

Loading…
Cancel
Save