zstdlib 0.9.0-x64-mingw-ucrt → 0.11.0-x64-mingw-ucrt

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +13 -0
  3. data/ext/zstdlib_c/extconf.rb +3 -3
  4. data/ext/zstdlib_c/ruby/zlib-3.2/zstdlib.c +5090 -0
  5. data/ext/zstdlib_c/zlib-1.2.12/crc32.c +1116 -0
  6. data/ext/zstdlib_c/zlib-1.2.12/crc32.h +9446 -0
  7. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/deflate.c +78 -30
  8. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/deflate.h +12 -15
  9. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/gzguts.h +3 -2
  10. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/gzlib.c +5 -3
  11. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/gzread.c +5 -7
  12. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/gzwrite.c +25 -13
  13. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/infback.c +2 -1
  14. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inffast.c +14 -14
  15. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inflate.c +39 -8
  16. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inflate.h +3 -2
  17. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inftrees.c +3 -3
  18. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/trees.c +27 -48
  19. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/zlib.h +123 -100
  20. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/zutil.c +2 -2
  21. data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/zutil.h +12 -9
  22. data/ext/zstdlib_c/zstd-1.5.5/lib/common/allocations.h +55 -0
  23. data/ext/zstdlib_c/zstd-1.5.5/lib/common/bits.h +200 -0
  24. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/bitstream.h +19 -60
  25. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/compiler.h +26 -3
  26. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/cpu.h +1 -1
  27. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/debug.c +1 -1
  28. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/debug.h +1 -1
  29. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/entropy_common.c +12 -40
  30. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/error_private.c +9 -2
  31. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/error_private.h +1 -1
  32. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/fse.h +5 -83
  33. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/fse_decompress.c +7 -99
  34. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/huf.h +65 -156
  35. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/mem.h +39 -46
  36. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/pool.c +26 -10
  37. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/pool.h +7 -1
  38. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/portability_macros.h +22 -3
  39. data/ext/zstdlib_c/zstd-1.5.5/lib/common/threading.c +176 -0
  40. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/threading.h +5 -10
  41. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/xxhash.c +2 -2
  42. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/xxhash.h +8 -8
  43. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/zstd_common.c +1 -36
  44. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/zstd_deps.h +1 -1
  45. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/zstd_internal.h +17 -118
  46. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/common/zstd_trace.h +3 -3
  47. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/clevels.h +1 -1
  48. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/fse_compress.c +7 -124
  49. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/hist.c +1 -1
  50. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/hist.h +1 -1
  51. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/huf_compress.c +234 -169
  52. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress.c +1243 -538
  53. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress_internal.h +225 -151
  54. data/ext/zstdlib_c/zstd-1.5.5/lib/compress/zstd_compress_literals.c +235 -0
  55. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress_literals.h +16 -8
  56. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress_sequences.c +3 -3
  57. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress_sequences.h +1 -1
  58. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress_superblock.c +25 -21
  59. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_compress_superblock.h +1 -1
  60. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_cwksp.h +128 -62
  61. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_double_fast.c +95 -33
  62. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_double_fast.h +3 -2
  63. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_fast.c +433 -148
  64. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_fast.h +3 -2
  65. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_lazy.c +398 -345
  66. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_lazy.h +4 -2
  67. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_ldm.c +5 -5
  68. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_ldm.h +1 -1
  69. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_ldm_geartab.h +1 -1
  70. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_opt.c +106 -80
  71. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstd_opt.h +1 -1
  72. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstdmt_compress.c +17 -9
  73. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/compress/zstdmt_compress.h +1 -1
  74. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/huf_decompress.c +434 -441
  75. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/huf_decompress_amd64.S +30 -39
  76. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/zstd_ddict.c +4 -4
  77. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/zstd_ddict.h +1 -1
  78. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/zstd_decompress.c +205 -80
  79. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/zstd_decompress_block.c +201 -81
  80. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/zstd_decompress_block.h +6 -1
  81. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/decompress/zstd_decompress_internal.h +4 -2
  82. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/zdict.h +53 -31
  83. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/zstd.h +580 -135
  84. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/lib/zstd_errors.h +27 -8
  85. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/gzclose.c +1 -1
  86. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/gzcompatibility.h +8 -8
  87. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/gzguts.h +10 -10
  88. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/gzlib.c +3 -3
  89. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/gzread.c +10 -10
  90. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/gzwrite.c +5 -5
  91. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/zstd_zlibwrapper.c +46 -44
  92. data/ext/zstdlib_c/{zstd-1.5.2 → zstd-1.5.5}/zlibWrapper/zstd_zlibwrapper.h +4 -1
  93. data/lib/3.1/zstdlib_c.so +0 -0
  94. data/lib/3.2/zstdlib_c.so +0 -0
  95. metadata +108 -104
  96. data/ext/zstdlib_c/zlib-1.2.11/crc32.c +0 -442
  97. data/ext/zstdlib_c/zlib-1.2.11/crc32.h +0 -441
  98. data/ext/zstdlib_c/zstd-1.5.2/lib/common/threading.c +0 -122
  99. data/ext/zstdlib_c/zstd-1.5.2/lib/compress/zstd_compress_literals.c +0 -159
  100. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/adler32.c +0 -0
  101. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/compress.c +0 -0
  102. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/gzclose.c +0 -0
  103. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inffast.h +0 -0
  104. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inffixed.h +0 -0
  105. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/inftrees.h +0 -0
  106. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/trees.h +0 -0
  107. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/uncompr.c +0 -0
  108. /data/ext/zstdlib_c/{zlib-1.2.11 → zlib-1.2.12}/zconf.h +0 -0
@@ -1,7 +1,7 @@
1
1
  /* zlib.h -- interface of the 'zlib' general purpose compression library
2
- version 1.2.11, January 15th, 2017
2
+ version 1.2.12, March 11th, 2022
3
3
 
4
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
4
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
5
5
 
6
6
  This software is provided 'as-is', without any express or implied
7
7
  warranty. In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
37
37
  extern "C" {
38
38
  #endif
39
39
 
40
- #define ZLIB_VERSION "1.2.11"
41
- #define ZLIB_VERNUM 0x12b0
40
+ #define ZLIB_VERSION "1.2.12"
41
+ #define ZLIB_VERNUM 0x12c0
42
42
  #define ZLIB_VER_MAJOR 1
43
43
  #define ZLIB_VER_MINOR 2
44
- #define ZLIB_VER_REVISION 11
44
+ #define ZLIB_VER_REVISION 12
45
45
  #define ZLIB_VER_SUBREVISION 0
46
46
 
47
47
  /*
@@ -543,8 +543,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
543
543
  int strategy));
544
544
 
545
545
  This is another version of deflateInit with more compression options. The
546
- fields next_in, zalloc, zfree and opaque must be initialized before by the
547
- caller.
546
+ fields zalloc, zfree and opaque must be initialized before by the caller.
548
547
 
549
548
  The method parameter is the compression method. It must be Z_DEFLATED in
550
549
  this version of the library.
@@ -712,11 +711,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
712
711
  used to switch between compression and straight copy of the input data, or
713
712
  to switch to a different kind of input data requiring a different strategy.
714
713
  If the compression approach (which is a function of the level) or the
715
- strategy is changed, and if any input has been consumed in a previous
716
- deflate() call, then the input available so far is compressed with the old
717
- level and strategy using deflate(strm, Z_BLOCK). There are three approaches
718
- for the compression levels 0, 1..3, and 4..9 respectively. The new level
719
- and strategy will take effect at the next call of deflate().
714
+ strategy is changed, and if there have been any deflate() calls since the
715
+ state was initialized or reset, then the input available so far is
716
+ compressed with the old level and strategy using deflate(strm, Z_BLOCK).
717
+ There are three approaches for the compression levels 0, 1..3, and 4..9
718
+ respectively. The new level and strategy will take effect at the next call
719
+ of deflate().
720
720
 
721
721
  If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
722
722
  not have enough output space to complete, then the parameter change will not
@@ -865,9 +865,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
865
865
  detection, or add 16 to decode only the gzip format (the zlib format will
866
866
  return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
867
867
  CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
868
- below), inflate() will not automatically decode concatenated gzip streams.
869
- inflate() will return Z_STREAM_END at the end of the gzip stream. The state
870
- would need to be reset to continue decoding a subsequent gzip stream.
868
+ below), inflate() will *not* automatically decode concatenated gzip members.
869
+ inflate() will return Z_STREAM_END at the end of the gzip member. The state
870
+ would need to be reset to continue decoding a subsequent gzip member. This
871
+ *must* be done if there is more data after a gzip member, in order for the
872
+ decompression to be compliant with the gzip standard (RFC 1952).
871
873
 
872
874
  inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
873
875
  memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -1302,14 +1304,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
1302
1304
  /*
1303
1305
  ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
1304
1306
 
1305
- Opens a gzip (.gz) file for reading or writing. The mode parameter is as
1306
- in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
1307
- a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
1308
- compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
1309
- for fixed code compression as in "wb9F". (See the description of
1310
- deflateInit2 for more information about the strategy parameter.) 'T' will
1311
- request transparent writing or appending with no compression and not using
1312
- the gzip format.
1307
+ Open the gzip (.gz) file at path for reading and decompressing, or
1308
+ compressing and writing. The mode parameter is as in fopen ("rb" or "wb")
1309
+ but can also include a compression level ("wb9") or a strategy: 'f' for
1310
+ filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
1311
+ 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
1312
+ as in "wb9F". (See the description of deflateInit2 for more information
1313
+ about the strategy parameter.) 'T' will request transparent writing or
1314
+ appending with no compression and not using the gzip format.
1313
1315
 
1314
1316
  "a" can be used instead of "w" to request that the gzip stream that will
1315
1317
  be written be appended to the file. "+" will result in an error, since
@@ -1339,9 +1341,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
1339
1341
 
1340
1342
  ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
1341
1343
  /*
1342
- gzdopen associates a gzFile with the file descriptor fd. File descriptors
1343
- are obtained from calls like open, dup, creat, pipe or fileno (if the file
1344
- has been previously opened with fopen). The mode parameter is as in gzopen.
1344
+ Associate a gzFile with the file descriptor fd. File descriptors are
1345
+ obtained from calls like open, dup, creat, pipe or fileno (if the file has
1346
+ been previously opened with fopen). The mode parameter is as in gzopen.
1345
1347
 
1346
1348
  The next call of gzclose on the returned gzFile will also close the file
1347
1349
  descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
@@ -1362,13 +1364,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
1362
1364
 
1363
1365
  ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
1364
1366
  /*
1365
- Set the internal buffer size used by this library's functions. The
1366
- default buffer size is 8192 bytes. This function must be called after
1367
- gzopen() or gzdopen(), and before any other calls that read or write the
1368
- file. The buffer memory allocation is always deferred to the first read or
1369
- write. Three times that size in buffer space is allocated. A larger buffer
1370
- size of, for example, 64K or 128K bytes will noticeably increase the speed
1371
- of decompression (reading).
1367
+ Set the internal buffer size used by this library's functions for file to
1368
+ size. The default buffer size is 8192 bytes. This function must be called
1369
+ after gzopen() or gzdopen(), and before any other calls that read or write
1370
+ the file. The buffer memory allocation is always deferred to the first read
1371
+ or write. Three times that size in buffer space is allocated. A larger
1372
+ buffer size of, for example, 64K or 128K bytes will noticeably increase the
1373
+ speed of decompression (reading).
1372
1374
 
1373
1375
  The new buffer size also affects the maximum length for gzprintf().
1374
1376
 
@@ -1378,9 +1380,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
1378
1380
 
1379
1381
  ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
1380
1382
  /*
1381
- Dynamically update the compression level or strategy. See the description
1382
- of deflateInit2 for the meaning of these parameters. Previously provided
1383
- data is flushed before the parameter change.
1383
+ Dynamically update the compression level and strategy for file. See the
1384
+ description of deflateInit2 for the meaning of these parameters. Previously
1385
+ provided data is flushed before applying the parameter changes.
1384
1386
 
1385
1387
  gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
1386
1388
  opened for writing, Z_ERRNO if there is an error writing the flushed data,
@@ -1389,7 +1391,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
1389
1391
 
1390
1392
  ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
1391
1393
  /*
1392
- Reads the given number of uncompressed bytes from the compressed file. If
1394
+ Read and decompress up to len uncompressed bytes from file into buf. If
1393
1395
  the input file is not in gzip format, gzread copies the given number of
1394
1396
  bytes into the buffer directly from the file.
1395
1397
 
@@ -1420,11 +1422,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
1420
1422
  ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
1421
1423
  gzFile file));
1422
1424
  /*
1423
- Read up to nitems items of size size from file to buf, otherwise operating
1424
- as gzread() does. This duplicates the interface of stdio's fread(), with
1425
- size_t request and return types. If the library defines size_t, then
1426
- z_size_t is identical to size_t. If not, then z_size_t is an unsigned
1427
- integer type that can contain a pointer.
1425
+ Read and decompress up to nitems items of size size from file into buf,
1426
+ otherwise operating as gzread() does. This duplicates the interface of
1427
+ stdio's fread(), with size_t request and return types. If the library
1428
+ defines size_t, then z_size_t is identical to size_t. If not, then z_size_t
1429
+ is an unsigned integer type that can contain a pointer.
1428
1430
 
1429
1431
  gzfread() returns the number of full items read of size size, or zero if
1430
1432
  the end of the file was reached and a full item could not be read, or if
@@ -1443,18 +1445,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
1443
1445
  file, reseting and retrying on end-of-file, when size is not 1.
1444
1446
  */
1445
1447
 
1446
- ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
1447
- voidpc buf, unsigned len));
1448
+ ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len));
1448
1449
  /*
1449
- Writes the given number of uncompressed bytes into the compressed file.
1450
- gzwrite returns the number of uncompressed bytes written or 0 in case of
1451
- error.
1450
+ Compress and write the len uncompressed bytes at buf to file. gzwrite
1451
+ returns the number of uncompressed bytes written or 0 in case of error.
1452
1452
  */
1453
1453
 
1454
1454
  ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
1455
1455
  z_size_t nitems, gzFile file));
1456
1456
  /*
1457
- gzfwrite() writes nitems items of size size from buf to file, duplicating
1457
+ Compress and write nitems items of size size from buf to file, duplicating
1458
1458
  the interface of stdio's fwrite(), with size_t request and return types. If
1459
1459
  the library defines size_t, then z_size_t is identical to size_t. If not,
1460
1460
  then z_size_t is an unsigned integer type that can contain a pointer.
@@ -1467,22 +1467,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
1467
1467
 
1468
1468
  ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
1469
1469
  /*
1470
- Converts, formats, and writes the arguments to the compressed file under
1471
- control of the format string, as in fprintf. gzprintf returns the number of
1470
+ Convert, format, compress, and write the arguments (...) to file under
1471
+ control of the string format, as in fprintf. gzprintf returns the number of
1472
1472
  uncompressed bytes actually written, or a negative zlib error code in case
1473
1473
  of error. The number of uncompressed bytes written is limited to 8191, or
1474
1474
  one less than the buffer size given to gzbuffer(). The caller should assure
1475
1475
  that this limit is not exceeded. If it is exceeded, then gzprintf() will
1476
1476
  return an error (0) with nothing written. In this case, there may also be a
1477
1477
  buffer overflow with unpredictable consequences, which is possible only if
1478
- zlib was compiled with the insecure functions sprintf() or vsprintf()
1478
+ zlib was compiled with the insecure functions sprintf() or vsprintf(),
1479
1479
  because the secure snprintf() or vsnprintf() functions were not available.
1480
1480
  This can be determined using zlibCompileFlags().
1481
1481
  */
1482
1482
 
1483
1483
  ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
1484
1484
  /*
1485
- Writes the given null-terminated string to the compressed file, excluding
1485
+ Compress and write the given null-terminated string s to file, excluding
1486
1486
  the terminating null character.
1487
1487
 
1488
1488
  gzputs returns the number of characters written, or -1 in case of error.
@@ -1490,11 +1490,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
1490
1490
 
1491
1491
  ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
1492
1492
  /*
1493
- Reads bytes from the compressed file until len-1 characters are read, or a
1494
- newline character is read and transferred to buf, or an end-of-file
1495
- condition is encountered. If any characters are read or if len == 1, the
1496
- string is terminated with a null character. If no characters are read due
1497
- to an end-of-file or len < 1, then the buffer is left untouched.
1493
+ Read and decompress bytes from file into buf, until len-1 characters are
1494
+ read, or until a newline character is read and transferred to buf, or an
1495
+ end-of-file condition is encountered. If any characters are read or if len
1496
+ is one, the string is terminated with a null character. If no characters
1497
+ are read due to an end-of-file or len is less than one, then the buffer is
1498
+ left untouched.
1498
1499
 
1499
1500
  gzgets returns buf which is a null-terminated string, or it returns NULL
1500
1501
  for end-of-file or in case of error. If there was an error, the contents at
@@ -1503,13 +1504,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
1503
1504
 
1504
1505
  ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
1505
1506
  /*
1506
- Writes c, converted to an unsigned char, into the compressed file. gzputc
1507
+ Compress and write c, converted to an unsigned char, into file. gzputc
1507
1508
  returns the value that was written, or -1 in case of error.
1508
1509
  */
1509
1510
 
1510
1511
  ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
1511
1512
  /*
1512
- Reads one byte from the compressed file. gzgetc returns this byte or -1
1513
+ Read and decompress one byte from file. gzgetc returns this byte or -1
1513
1514
  in case of end of file or error. This is implemented as a macro for speed.
1514
1515
  As such, it does not do all of the checking the other functions do. I.e.
1515
1516
  it does not check to see if file is NULL, nor whether the structure file
@@ -1518,8 +1519,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
1518
1519
 
1519
1520
  ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
1520
1521
  /*
1521
- Push one character back onto the stream to be read as the first character
1522
- on the next read. At least one character of push-back is allowed.
1522
+ Push c back onto the stream for file to be read as the first character on
1523
+ the next read. At least one character of push-back is always allowed.
1523
1524
  gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
1524
1525
  fail if c is -1, and may fail if a character has been pushed but not read
1525
1526
  yet. If gzungetc is used immediately after gzopen or gzdopen, at least the
@@ -1530,9 +1531,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
1530
1531
 
1531
1532
  ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
1532
1533
  /*
1533
- Flushes all pending output into the compressed file. The parameter flush
1534
- is as in the deflate() function. The return value is the zlib error number
1535
- (see function gzerror below). gzflush is only permitted when writing.
1534
+ Flush all pending output to file. The parameter flush is as in the
1535
+ deflate() function. The return value is the zlib error number (see function
1536
+ gzerror below). gzflush is only permitted when writing.
1536
1537
 
1537
1538
  If the flush parameter is Z_FINISH, the remaining data is written and the
1538
1539
  gzip stream is completed in the output. If gzwrite() is called again, a new
@@ -1547,8 +1548,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
1547
1548
  ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
1548
1549
  z_off_t offset, int whence));
1549
1550
 
1550
- Sets the starting position for the next gzread or gzwrite on the given
1551
- compressed file. The offset represents a number of bytes in the
1551
+ Set the starting position to offset relative to whence for the next gzread
1552
+ or gzwrite on file. The offset represents a number of bytes in the
1552
1553
  uncompressed data stream. The whence parameter is defined as in lseek(2);
1553
1554
  the value SEEK_END is not supported.
1554
1555
 
@@ -1565,18 +1566,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
1565
1566
 
1566
1567
  ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
1567
1568
  /*
1568
- Rewinds the given file. This function is supported only for reading.
1569
+ Rewind file. This function is supported only for reading.
1569
1570
 
1570
- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
1571
+ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET).
1571
1572
  */
1572
1573
 
1573
1574
  /*
1574
1575
  ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
1575
1576
 
1576
- Returns the starting position for the next gzread or gzwrite on the given
1577
- compressed file. This position represents a number of bytes in the
1578
- uncompressed data stream, and is zero when starting, even if appending or
1579
- reading a gzip stream from the middle of a file using gzdopen().
1577
+ Return the starting position for the next gzread or gzwrite on file.
1578
+ This position represents a number of bytes in the uncompressed data stream,
1579
+ and is zero when starting, even if appending or reading a gzip stream from
1580
+ the middle of a file using gzdopen().
1580
1581
 
1581
1582
  gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
1582
1583
  */
@@ -1584,22 +1585,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
1584
1585
  /*
1585
1586
  ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
1586
1587
 
1587
- Returns the current offset in the file being read or written. This offset
1588
- includes the count of bytes that precede the gzip stream, for example when
1589
- appending or when using gzdopen() for reading. When reading, the offset
1590
- does not include as yet unused buffered input. This information can be used
1591
- for a progress indicator. On error, gzoffset() returns -1.
1588
+ Return the current compressed (actual) read or write offset of file. This
1589
+ offset includes the count of bytes that precede the gzip stream, for example
1590
+ when appending or when using gzdopen() for reading. When reading, the
1591
+ offset does not include as yet unused buffered input. This information can
1592
+ be used for a progress indicator. On error, gzoffset() returns -1.
1592
1593
  */
1593
1594
 
1594
1595
  ZEXTERN int ZEXPORT gzeof OF((gzFile file));
1595
1596
  /*
1596
- Returns true (1) if the end-of-file indicator has been set while reading,
1597
- false (0) otherwise. Note that the end-of-file indicator is set only if the
1598
- read tried to go past the end of the input, but came up short. Therefore,
1599
- just like feof(), gzeof() may return false even if there is no more data to
1600
- read, in the event that the last read request was for the exact number of
1601
- bytes remaining in the input file. This will happen if the input file size
1602
- is an exact multiple of the buffer size.
1597
+ Return true (1) if the end-of-file indicator for file has been set while
1598
+ reading, false (0) otherwise. Note that the end-of-file indicator is set
1599
+ only if the read tried to go past the end of the input, but came up short.
1600
+ Therefore, just like feof(), gzeof() may return false even if there is no
1601
+ more data to read, in the event that the last read request was for the exact
1602
+ number of bytes remaining in the input file. This will happen if the input
1603
+ file size is an exact multiple of the buffer size.
1603
1604
 
1604
1605
  If gzeof() returns true, then the read functions will return no more data,
1605
1606
  unless the end-of-file indicator is reset by gzclearerr() and the input file
@@ -1608,7 +1609,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
1608
1609
 
1609
1610
  ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
1610
1611
  /*
1611
- Returns true (1) if file is being copied directly while reading, or false
1612
+ Return true (1) if file is being copied directly while reading, or false
1612
1613
  (0) if file is a gzip stream being decompressed.
1613
1614
 
1614
1615
  If the input file is empty, gzdirect() will return true, since the input
@@ -1629,8 +1630,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
1629
1630
 
1630
1631
  ZEXTERN int ZEXPORT gzclose OF((gzFile file));
1631
1632
  /*
1632
- Flushes all pending output if necessary, closes the compressed file and
1633
- deallocates the (de)compression state. Note that once file is closed, you
1633
+ Flush all pending output for file, if necessary, close file and
1634
+ deallocate the (de)compression state. Note that once file is closed, you
1634
1635
  cannot call gzerror with file, since its structures have been deallocated.
1635
1636
  gzclose must not be called more than once on the same file, just as free
1636
1637
  must not be called more than once on the same allocation.
@@ -1654,10 +1655,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
1654
1655
 
1655
1656
  ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
1656
1657
  /*
1657
- Returns the error message for the last error which occurred on the given
1658
- compressed file. errnum is set to zlib error number. If an error occurred
1659
- in the file system and not in the compression library, errnum is set to
1660
- Z_ERRNO and the application may consult errno to get the exact error code.
1658
+ Return the error message for the last error which occurred on file.
1659
+ errnum is set to zlib error number. If an error occurred in the file system
1660
+ and not in the compression library, errnum is set to Z_ERRNO and the
1661
+ application may consult errno to get the exact error code.
1661
1662
 
1662
1663
  The application must not modify the returned string. Future calls to
1663
1664
  this function may invalidate the previously returned string. If file is
@@ -1670,7 +1671,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
1670
1671
 
1671
1672
  ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
1672
1673
  /*
1673
- Clears the error and end-of-file flags for file. This is analogous to the
1674
+ Clear the error and end-of-file flags for file. This is analogous to the
1674
1675
  clearerr() function in stdio. This is useful for continuing to read a gzip
1675
1676
  file that is being written concurrently.
1676
1677
  */
@@ -1688,8 +1689,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
1688
1689
  ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
1689
1690
  /*
1690
1691
  Update a running Adler-32 checksum with the bytes buf[0..len-1] and
1691
- return the updated checksum. If buf is Z_NULL, this function returns the
1692
- required initial value for the checksum.
1692
+ return the updated checksum. An Adler-32 value is in the range of a 32-bit
1693
+ unsigned integer. If buf is Z_NULL, this function returns the required
1694
+ initial value for the checksum.
1693
1695
 
1694
1696
  An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
1695
1697
  much faster.
@@ -1722,12 +1724,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
1722
1724
  negative, the result has no meaning or utility.
1723
1725
  */
1724
1726
 
1725
- ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
1727
+ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
1726
1728
  /*
1727
1729
  Update a running CRC-32 with the bytes buf[0..len-1] and return the
1728
- updated CRC-32. If buf is Z_NULL, this function returns the required
1729
- initial value for the crc. Pre- and post-conditioning (one's complement) is
1730
- performed within this function so it shouldn't be done by the application.
1730
+ updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
1731
+ If buf is Z_NULL, this function returns the required initial value for the
1732
+ crc. Pre- and post-conditioning (one's complement) is performed within this
1733
+ function so it shouldn't be done by the application.
1731
1734
 
1732
1735
  Usage example:
1733
1736
 
@@ -1739,7 +1742,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
1739
1742
  if (crc != original_crc) error();
1740
1743
  */
1741
1744
 
1742
- ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
1745
+ ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf,
1743
1746
  z_size_t len));
1744
1747
  /*
1745
1748
  Same as crc32(), but with a size_t length.
@@ -1755,6 +1758,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
1755
1758
  len2.
1756
1759
  */
1757
1760
 
1761
+ /*
1762
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2));
1763
+
1764
+ Return the operator corresponding to length len2, to be used with
1765
+ crc32_combine_op().
1766
+ */
1767
+
1768
+ ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op));
1769
+ /*
1770
+ Give the same result as crc32_combine(), using op in place of len2. op is
1771
+ is generated from len2 by crc32_combine_gen(). This will be faster than
1772
+ crc32_combine() if the generated op is used more than once.
1773
+ */
1774
+
1758
1775
 
1759
1776
  /* various hacks, don't look :) */
1760
1777
 
@@ -1842,6 +1859,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
1842
1859
  ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
1843
1860
  ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
1844
1861
  ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
1862
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t));
1845
1863
  #endif
1846
1864
 
1847
1865
  #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
@@ -1852,6 +1870,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
1852
1870
  # define z_gzoffset z_gzoffset64
1853
1871
  # define z_adler32_combine z_adler32_combine64
1854
1872
  # define z_crc32_combine z_crc32_combine64
1873
+ # define z_crc32_combine_gen z_crc32_combine_gen64
1855
1874
  # else
1856
1875
  # define gzopen gzopen64
1857
1876
  # define gzseek gzseek64
@@ -1859,6 +1878,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
1859
1878
  # define gzoffset gzoffset64
1860
1879
  # define adler32_combine adler32_combine64
1861
1880
  # define crc32_combine crc32_combine64
1881
+ # define crc32_combine_gen crc32_combine_gen64
1862
1882
  # endif
1863
1883
  # ifndef Z_LARGE64
1864
1884
  ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
@@ -1867,6 +1887,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
1867
1887
  ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
1868
1888
  ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
1869
1889
  ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
1890
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
1870
1891
  # endif
1871
1892
  #else
1872
1893
  ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
@@ -1875,12 +1896,14 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
1875
1896
  ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
1876
1897
  ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
1877
1898
  ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
1899
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
1878
1900
  #endif
1879
1901
 
1880
1902
  #else /* Z_SOLO */
1881
1903
 
1882
1904
  ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
1883
1905
  ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
1906
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
1884
1907
 
1885
1908
  #endif /* !Z_SOLO */
1886
1909
 
@@ -1893,7 +1916,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
1893
1916
  ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp));
1894
1917
  ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
1895
1918
  ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
1896
- #if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
1919
+ #if defined(_WIN32) && !defined(Z_SOLO)
1897
1920
  ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
1898
1921
  const char *mode));
1899
1922
  #endif
@@ -136,8 +136,8 @@ const char * ZEXPORT zError(err)
136
136
  return ERR_MSG(err);
137
137
  }
138
138
 
139
- #if defined(_WIN32_WCE)
140
- /* The Microsoft C Run-Time Library for Windows CE doesn't have
139
+ #if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
140
+ /* The older Microsoft C Run-Time Library for Windows CE doesn't have
141
141
  * errno. We define it as a global variable to simplify porting.
142
142
  * Its value is always 0 and should not be used.
143
143
  */
@@ -1,5 +1,5 @@
1
1
  /* zutil.h -- internal interface and configuration of the compression library
2
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
2
+ * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
3
3
  * For conditions of distribution and use, see copyright notice in zlib.h
4
4
  */
5
5
 
@@ -29,10 +29,6 @@
29
29
  # include <stdlib.h>
30
30
  #endif
31
31
 
32
- #ifdef Z_SOLO
33
- typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
34
- #endif
35
-
36
32
  #ifndef local
37
33
  # define local static
38
34
  #endif
@@ -46,6 +42,17 @@ typedef unsigned short ush;
46
42
  typedef ush FAR ushf;
47
43
  typedef unsigned long ulg;
48
44
 
45
+ #if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
46
+ # include <limits.h>
47
+ # if (ULONG_MAX == 0xffffffffffffffff)
48
+ # define Z_U8 unsigned long
49
+ # elif (ULLONG_MAX == 0xffffffffffffffff)
50
+ # define Z_U8 unsigned long long
51
+ # elif (UINT_MAX == 0xffffffffffffffff)
52
+ # define Z_U8 unsigned
53
+ # endif
54
+ #endif
55
+
49
56
  extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
50
57
  /* (size given to avoid silly warnings with Visual C++) */
51
58
 
@@ -170,10 +177,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
170
177
  #if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
171
178
  # if defined(_WIN32_WCE)
172
179
  # define fdopen(fd,mode) NULL /* No fdopen() */
173
- # ifndef _PTRDIFF_T_DEFINED
174
- typedef int ptrdiff_t;
175
- # define _PTRDIFF_T_DEFINED
176
- # endif
177
180
  # else
178
181
  # define fdopen(fd,type) _fdopen(fd,type)
179
182
  # endif
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ * All rights reserved.
4
+ *
5
+ * This source code is licensed under both the BSD-style license (found in the
6
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7
+ * in the COPYING file in the root directory of this source tree).
8
+ * You may select, at your option, one of the above-listed licenses.
9
+ */
10
+
11
+ /* This file provides custom allocation primitives
12
+ */
13
+
14
+ #define ZSTD_DEPS_NEED_MALLOC
15
+ #include "zstd_deps.h" /* ZSTD_malloc, ZSTD_calloc, ZSTD_free, ZSTD_memset */
16
+
17
+ #include "mem.h" /* MEM_STATIC */
18
+ #define ZSTD_STATIC_LINKING_ONLY
19
+ #include "../zstd.h" /* ZSTD_customMem */
20
+
21
+ #ifndef ZSTD_ALLOCATIONS_H
22
+ #define ZSTD_ALLOCATIONS_H
23
+
24
+ /* custom memory allocation functions */
25
+
26
+ MEM_STATIC void* ZSTD_customMalloc(size_t size, ZSTD_customMem customMem)
27
+ {
28
+ if (customMem.customAlloc)
29
+ return customMem.customAlloc(customMem.opaque, size);
30
+ return ZSTD_malloc(size);
31
+ }
32
+
33
+ MEM_STATIC void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem)
34
+ {
35
+ if (customMem.customAlloc) {
36
+ /* calloc implemented as malloc+memset;
37
+ * not as efficient as calloc, but next best guess for custom malloc */
38
+ void* const ptr = customMem.customAlloc(customMem.opaque, size);
39
+ ZSTD_memset(ptr, 0, size);
40
+ return ptr;
41
+ }
42
+ return ZSTD_calloc(1, size);
43
+ }
44
+
45
+ MEM_STATIC void ZSTD_customFree(void* ptr, ZSTD_customMem customMem)
46
+ {
47
+ if (ptr!=NULL) {
48
+ if (customMem.customFree)
49
+ customMem.customFree(customMem.opaque, ptr);
50
+ else
51
+ ZSTD_free(ptr);
52
+ }
53
+ }
54
+
55
+ #endif /* ZSTD_ALLOCATIONS_H */