removed defaultCustomMem
now ZSTD_customCMem is promoted as new default. Advantages : ZSTD_customCMem = { NULL, NULL, NULL}, so it's natural default after a memset. ZSTD_customCMem is public constant (defaultCustomMem was private only). Also : makes it possible to introduce ZSTD_calloc(), which can now default to stdlib's calloc() when it detects system default. Fixed zlibwrapper which depended on defaultCustomMem.
This commit is contained in:
parent
5bcef1ada2
commit
ae728a43b8
@ -50,20 +50,6 @@ const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString
|
|||||||
/*=**************************************************************
|
/*=**************************************************************
|
||||||
* Custom allocator
|
* Custom allocator
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
/* default uses stdlib */
|
|
||||||
void* ZSTD_defaultAllocFunction(void* opaque, size_t size)
|
|
||||||
{
|
|
||||||
void* address = malloc(size);
|
|
||||||
(void)opaque;
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ZSTD_defaultFreeFunction(void* opaque, void* address)
|
|
||||||
{
|
|
||||||
(void)opaque;
|
|
||||||
free(address);
|
|
||||||
}
|
|
||||||
|
|
||||||
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem)
|
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem)
|
||||||
{
|
{
|
||||||
if (customMem.customAlloc)
|
if (customMem.customAlloc)
|
||||||
|
@ -238,11 +238,6 @@ void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
|
|||||||
int ZSTD_isSkipFrame(ZSTD_DCtx* dctx);
|
int ZSTD_isSkipFrame(ZSTD_DCtx* dctx);
|
||||||
|
|
||||||
/* custom memory allocation functions */
|
/* custom memory allocation functions */
|
||||||
void* ZSTD_defaultAllocFunction(void* opaque, size_t size);
|
|
||||||
void ZSTD_defaultFreeFunction(void* opaque, void* address);
|
|
||||||
#ifndef ZSTD_DLL_IMPORT
|
|
||||||
static const ZSTD_customMem defaultCustomMem = { ZSTD_defaultAllocFunction, ZSTD_defaultFreeFunction, NULL };
|
|
||||||
#endif
|
|
||||||
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem);
|
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem);
|
||||||
void* ZSTD_calloc(size_t size, ZSTD_customMem customMem);
|
void* ZSTD_calloc(size_t size, ZSTD_customMem customMem);
|
||||||
void ZSTD_free(void* ptr, ZSTD_customMem customMem);
|
void ZSTD_free(void* ptr, ZSTD_customMem customMem);
|
||||||
|
@ -158,15 +158,14 @@ struct ZSTD_CCtx_s {
|
|||||||
|
|
||||||
ZSTD_CCtx* ZSTD_createCCtx(void)
|
ZSTD_CCtx* ZSTD_createCCtx(void)
|
||||||
{
|
{
|
||||||
return ZSTD_createCCtx_advanced(defaultCustomMem);
|
return ZSTD_createCCtx_advanced(ZSTD_defaultCMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem)
|
ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem)
|
||||||
{
|
{
|
||||||
ZSTD_CCtx* cctx;
|
ZSTD_CCtx* cctx;
|
||||||
|
|
||||||
if (!customMem.customAlloc && !customMem.customFree) customMem = defaultCustomMem;
|
if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
|
||||||
if (!customMem.customAlloc || !customMem.customFree) return NULL;
|
|
||||||
|
|
||||||
cctx = (ZSTD_CCtx*) ZSTD_malloc(sizeof(ZSTD_CCtx), customMem);
|
cctx = (ZSTD_CCtx*) ZSTD_malloc(sizeof(ZSTD_CCtx), customMem);
|
||||||
if (!cctx) return NULL;
|
if (!cctx) return NULL;
|
||||||
@ -3225,9 +3224,9 @@ size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcS
|
|||||||
size_t result;
|
size_t result;
|
||||||
ZSTD_CCtx ctxBody;
|
ZSTD_CCtx ctxBody;
|
||||||
memset(&ctxBody, 0, sizeof(ctxBody));
|
memset(&ctxBody, 0, sizeof(ctxBody));
|
||||||
memcpy(&ctxBody.customMem, &defaultCustomMem, sizeof(ZSTD_customMem));
|
ctxBody.customMem = ZSTD_defaultCMem;
|
||||||
result = ZSTD_compressCCtx(&ctxBody, dst, dstCapacity, src, srcSize, compressionLevel);
|
result = ZSTD_compressCCtx(&ctxBody, dst, dstCapacity, src, srcSize, compressionLevel);
|
||||||
ZSTD_free(ctxBody.workSpace, defaultCustomMem); /* can't free ctxBody itself, as it's on stack; free only heap content */
|
ZSTD_free(ctxBody.workSpace, ZSTD_defaultCMem); /* can't free ctxBody itself, as it's on stack; free only heap content */
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3288,8 +3287,7 @@ ZSTD_CDict* ZSTD_createCDict_advanced(const void* dictBuffer, size_t dictSize, u
|
|||||||
ZSTD_compressionParameters cParams, ZSTD_customMem customMem)
|
ZSTD_compressionParameters cParams, ZSTD_customMem customMem)
|
||||||
{
|
{
|
||||||
DEBUGLOG(5, "ZSTD_createCDict_advanced");
|
DEBUGLOG(5, "ZSTD_createCDict_advanced");
|
||||||
if (!customMem.customAlloc && !customMem.customFree) customMem = defaultCustomMem;
|
if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
|
||||||
if (!customMem.customAlloc || !customMem.customFree) return NULL;
|
|
||||||
|
|
||||||
{ ZSTD_CDict* const cdict = (ZSTD_CDict*) ZSTD_malloc(sizeof(ZSTD_CDict), customMem);
|
{ ZSTD_CDict* const cdict = (ZSTD_CDict*) ZSTD_malloc(sizeof(ZSTD_CDict), customMem);
|
||||||
ZSTD_CCtx* const cctx = ZSTD_createCCtx_advanced(customMem);
|
ZSTD_CCtx* const cctx = ZSTD_createCCtx_advanced(customMem);
|
||||||
@ -3442,12 +3440,11 @@ size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx,
|
|||||||
|
|
||||||
ZSTD_CStream* ZSTD_createCStream(void)
|
ZSTD_CStream* ZSTD_createCStream(void)
|
||||||
{
|
{
|
||||||
return ZSTD_createCStream_advanced(defaultCustomMem);
|
return ZSTD_createCStream_advanced(ZSTD_defaultCMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem)
|
ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem)
|
||||||
{
|
{ /* CStream and CCtx are now same object */
|
||||||
/* CStream and CCtx are now same object */
|
|
||||||
return ZSTD_createCCtx_advanced(customMem);
|
return ZSTD_createCCtx_advanced(customMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ ZSTDLIB_API size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output);
|
|||||||
ZSTDLIB_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx, const void* dict, size_t dictSize, /**< dict can be released after init, a local copy is preserved within zcs */
|
ZSTDLIB_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx, const void* dict, size_t dictSize, /**< dict can be released after init, a local copy is preserved within zcs */
|
||||||
ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be zero == unknown */
|
ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be zero == unknown */
|
||||||
|
|
||||||
|
|
||||||
/* ZSDTMT_parameter :
|
/* ZSDTMT_parameter :
|
||||||
* List of parameters that can be set using ZSTDMT_setMTCtxParameter() */
|
* List of parameters that can be set using ZSTDMT_setMTCtxParameter() */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -206,9 +206,7 @@ ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem)
|
|||||||
{
|
{
|
||||||
ZSTD_DCtx* dctx;
|
ZSTD_DCtx* dctx;
|
||||||
|
|
||||||
if (!customMem.customAlloc && !customMem.customFree)
|
if (!customMem.customAlloc ^ !customMem.customFree)
|
||||||
customMem = defaultCustomMem;
|
|
||||||
if (!customMem.customAlloc || !customMem.customFree)
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
dctx = (ZSTD_DCtx*)ZSTD_malloc(sizeof(ZSTD_DCtx), customMem);
|
dctx = (ZSTD_DCtx*)ZSTD_malloc(sizeof(ZSTD_DCtx), customMem);
|
||||||
@ -233,7 +231,7 @@ ZSTD_DCtx* ZSTD_initStaticDCtx(void *workspace, size_t workspaceSize)
|
|||||||
|
|
||||||
ZSTD_DCtx* ZSTD_createDCtx(void)
|
ZSTD_DCtx* ZSTD_createDCtx(void)
|
||||||
{
|
{
|
||||||
return ZSTD_createDCtx_advanced(defaultCustomMem);
|
return ZSTD_createDCtx_advanced(ZSTD_defaultCMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx)
|
size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx)
|
||||||
@ -2012,8 +2010,7 @@ static size_t ZSTD_initDDict_internal(ZSTD_DDict* ddict, const void* dict, size_
|
|||||||
|
|
||||||
ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, unsigned byReference, ZSTD_customMem customMem)
|
ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, unsigned byReference, ZSTD_customMem customMem)
|
||||||
{
|
{
|
||||||
if (!customMem.customAlloc && !customMem.customFree) customMem = defaultCustomMem;
|
if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
|
||||||
if (!customMem.customAlloc || !customMem.customFree) return NULL;
|
|
||||||
|
|
||||||
{ ZSTD_DDict* const ddict = (ZSTD_DDict*) ZSTD_malloc(sizeof(ZSTD_DDict), customMem);
|
{ ZSTD_DDict* const ddict = (ZSTD_DDict*) ZSTD_malloc(sizeof(ZSTD_DDict), customMem);
|
||||||
if (!ddict) return NULL;
|
if (!ddict) return NULL;
|
||||||
@ -2155,7 +2152,7 @@ size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx,
|
|||||||
|
|
||||||
ZSTD_DStream* ZSTD_createDStream(void)
|
ZSTD_DStream* ZSTD_createDStream(void)
|
||||||
{
|
{
|
||||||
return ZSTD_createDStream_advanced(defaultCustomMem);
|
return ZSTD_createDStream_advanced(ZSTD_defaultCMem);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZSTD_DStream* ZSTD_createDStream_advanced(ZSTD_customMem customMem)
|
ZSTD_DStream* ZSTD_createDStream_advanced(ZSTD_customMem customMem)
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <stdio.h> /* vsprintf */
|
#include <stdio.h> /* vsprintf */
|
||||||
#include <stdarg.h> /* va_list, for z_gzprintf */
|
#include <stdarg.h> /* va_list, for z_gzprintf */
|
||||||
#define NO_DUMMY_DECL
|
#define NO_DUMMY_DECL
|
||||||
@ -117,10 +118,8 @@ ZWRAP_CCtx* ZWRAP_createCCtx(z_streamp strm)
|
|||||||
memcpy(&zwc->customMem, &ZWRAP_customMem, sizeof(ZSTD_customMem));
|
memcpy(&zwc->customMem, &ZWRAP_customMem, sizeof(ZSTD_customMem));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
zwc = (ZWRAP_CCtx*)defaultCustomMem.customAlloc(defaultCustomMem.opaque, sizeof(ZWRAP_CCtx));
|
zwc = (ZWRAP_CCtx*)calloc(1, sizeof(*zwc));
|
||||||
if (zwc==NULL) return NULL;
|
if (zwc==NULL) return NULL;
|
||||||
memset(zwc, 0, sizeof(ZWRAP_CCtx));
|
|
||||||
memcpy(&zwc->customMem, &defaultCustomMem, sizeof(ZSTD_customMem));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return zwc;
|
return zwc;
|
||||||
@ -459,10 +458,8 @@ ZWRAP_DCtx* ZWRAP_createDCtx(z_streamp strm)
|
|||||||
memcpy(&zwd->customMem, &ZWRAP_customMem, sizeof(ZSTD_customMem));
|
memcpy(&zwd->customMem, &ZWRAP_customMem, sizeof(ZSTD_customMem));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
zwd = (ZWRAP_DCtx*)defaultCustomMem.customAlloc(defaultCustomMem.opaque, sizeof(ZWRAP_DCtx));
|
zwd = (ZWRAP_DCtx*)calloc(1, sizeof(*zwd));
|
||||||
if (zwd==NULL) return NULL;
|
if (zwd==NULL) return NULL;
|
||||||
memset(zwd, 0, sizeof(ZWRAP_DCtx));
|
|
||||||
memcpy(&zwd->customMem, &defaultCustomMem, sizeof(ZSTD_customMem));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MEM_STATIC_ASSERT(sizeof(zwd->headerBuf) >= ZSTD_FRAMEHEADERSIZE_MIN); /* if compilation fails here, assertion is false */
|
MEM_STATIC_ASSERT(sizeof(zwd->headerBuf) >= ZSTD_FRAMEHEADERSIZE_MIN); /* if compilation fails here, assertion is false */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user