From a3622937453f517285f851817a7505f54f4f19aa Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Sat, 4 Feb 2017 23:58:37 -0800 Subject: Avoid a conversion error in gzseek when off_t type too small. This is a problem in the odd case that the second argument of LSEEK is a larger type than off_t. Apparently MinGW defines off_t to be 32 bits, but _lseeki64 has a 64-bit second argument. Also undo a previous commit to permit MinGW to use _lseeki64. --- gzlib.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gzlib.c') diff --git a/gzlib.c b/gzlib.c index 4105e6a..4838bf0 100644 --- a/gzlib.c +++ b/gzlib.c @@ -5,7 +5,7 @@ #include "gzguts.h" -#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__) +#if defined(_WIN32) && !defined(__BORLANDC__) # define LSEEK _lseeki64 #else #if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 @@ -397,7 +397,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence) /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && state->x.pos + offset >= 0) { - ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); + ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR); if (ret == -1) return -1; state->x.have = 0; -- cgit v1.2.1