Avoid fseek()'s 2GiB barrier with MinGW
This commit is contained in:
parent
40ad1e85d4
commit
68a358769e
@ -59,17 +59,6 @@
|
||||
#include "lz4frame.h"
|
||||
|
||||
|
||||
/* **************************************
|
||||
* Compiler Options
|
||||
****************************************/
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400) /* Avoid MSVC fseek()'s 2GiB barrier */
|
||||
# define fseek _fseeki64
|
||||
#endif
|
||||
#if !defined(__64BIT__) && (PLATFORM_POSIX_VERSION >= 200112L) /* No point defining Large file for 64 bit */
|
||||
# define fseek fseeko
|
||||
#endif
|
||||
|
||||
|
||||
/*****************************
|
||||
* Constants
|
||||
*****************************/
|
||||
@ -633,7 +622,7 @@ static unsigned LZ4IO_fwriteSparse(FILE* file, const void* buffer, size_t buffer
|
||||
|
||||
/* avoid int overflow */
|
||||
if (storedSkips > 1 GB) {
|
||||
int const seekResult = fseek(file, 1 GB, SEEK_CUR);
|
||||
int const seekResult = UTIL_fseek(file, 1 GB, SEEK_CUR);
|
||||
if (seekResult != 0) EXM_THROW(71, "1 GB skip error (sparse file support)");
|
||||
storedSkips -= 1 GB;
|
||||
}
|
||||
@ -650,7 +639,7 @@ static unsigned LZ4IO_fwriteSparse(FILE* file, const void* buffer, size_t buffer
|
||||
|
||||
if (nb0T != seg0SizeT) { /* not all 0s */
|
||||
errno = 0;
|
||||
{ int const seekResult = fseek(file, storedSkips, SEEK_CUR);
|
||||
{ int const seekResult = UTIL_fseek(file, storedSkips, SEEK_CUR);
|
||||
if (seekResult) EXM_THROW(72, "Sparse skip error(%d): %s ; try --no-sparse", (int)errno, strerror(errno));
|
||||
}
|
||||
storedSkips = 0;
|
||||
@ -670,7 +659,7 @@ static unsigned LZ4IO_fwriteSparse(FILE* file, const void* buffer, size_t buffer
|
||||
for (; (restPtr < restEnd) && (*restPtr == 0); restPtr++) ;
|
||||
storedSkips += (unsigned) (restPtr - restStart);
|
||||
if (restPtr != restEnd) {
|
||||
int const seekResult = fseek(file, storedSkips, SEEK_CUR);
|
||||
int const seekResult = UTIL_fseek(file, storedSkips, SEEK_CUR);
|
||||
if (seekResult) EXM_THROW(74, "Sparse skip error ; try --no-sparse");
|
||||
storedSkips = 0;
|
||||
{ size_t const sizeCheck = fwrite(restPtr, 1, restEnd - restPtr, file);
|
||||
@ -684,7 +673,7 @@ static unsigned LZ4IO_fwriteSparse(FILE* file, const void* buffer, size_t buffer
|
||||
static void LZ4IO_fwriteSparseEnd(FILE* file, unsigned storedSkips)
|
||||
{
|
||||
if (storedSkips>0) { /* implies g_sparseFileSupport>0 */
|
||||
int const seekResult = fseek(file, storedSkips-1, SEEK_CUR);
|
||||
int const seekResult = UTIL_fseek(file, storedSkips-1, SEEK_CUR);
|
||||
if (seekResult != 0) EXM_THROW(69, "Final skip error (sparse file)\n");
|
||||
{ const char lastZeroByte[1] = { 0 };
|
||||
size_t const sizeCheck = fwrite(lastZeroByte, 1, 1, file);
|
||||
@ -873,7 +862,7 @@ static int fseek_u32(FILE *fp, unsigned offset, int where)
|
||||
while (offset > 0) {
|
||||
unsigned s = offset;
|
||||
if (s > stepMax) s = stepMax;
|
||||
errorNb = fseek(fp, (long) s, SEEK_CUR);
|
||||
errorNb = UTIL_fseek(fp, (long) s, SEEK_CUR);
|
||||
if (errorNb != 0) break;
|
||||
offset -= s;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user