zlib_wrapper's uncompress() uses ZSTD_isFrame() for routing
more generic and safer than using own routing for magic number comparison
diff --git a/lib/common/zstd_common.c b/lib/common/zstd_common.c
index 93187d5..f681672 100644
--- a/lib/common/zstd_common.c
+++ b/lib/common/zstd_common.c
@@ -22,7 +22,7 @@
/*-****************************************
* Version
******************************************/
-unsigned ZSTD_versionNumber (void) { return ZSTD_VERSION_NUMBER; }
+unsigned ZSTD_versionNumber(void) { return ZSTD_VERSION_NUMBER; }
const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; }
diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c
index 7dfcddb..766ff0f 100644
--- a/lib/decompress/zstd_decompress.c
+++ b/lib/decompress/zstd_decompress.c
@@ -204,16 +204,14 @@
ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem)
{
- ZSTD_DCtx* dctx;
+ if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
- if (!customMem.customAlloc ^ !customMem.customFree)
- return NULL;
-
- dctx = (ZSTD_DCtx*)ZSTD_malloc(sizeof(ZSTD_DCtx), customMem);
- if (!dctx) return NULL;
- memcpy(&dctx->customMem, &customMem, sizeof(customMem));
- ZSTD_initDCtx_internal(dctx);
- return dctx;
+ { ZSTD_DCtx* const dctx = (ZSTD_DCtx*)ZSTD_malloc(sizeof(*dctx), customMem);
+ if (!dctx) return NULL;
+ dctx->customMem = customMem;
+ ZSTD_initDCtx_internal(dctx);
+ return dctx;
+ }
}
ZSTD_DCtx* ZSTD_initStaticDCtx(void *workspace, size_t workspaceSize)
diff --git a/zlibWrapper/zstd_zlibwrapper.c b/zlibWrapper/zstd_zlibwrapper.c
index 7a0b09d..ed68a8a 100644
--- a/zlibWrapper/zstd_zlibwrapper.c
+++ b/zlibWrapper/zstd_zlibwrapper.c
@@ -15,7 +15,7 @@
#define ZLIB_CONST
#include <zlib.h> /* without #define Z_PREFIX */
#include "zstd_zlibwrapper.h"
-#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_MAGICNUMBER */
+#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_isFrame, ZSTD_MAGICNUMBER */
#include "zstd.h"
#include "zstd_internal.h" /* ZSTD_malloc, ZSTD_free */
@@ -1004,9 +1004,9 @@
return compress2(dest, destLen, source, sourceLen, level);
{ size_t dstCapacity = *destLen;
- size_t const errorCode = ZSTD_compress(dest, dstCapacity, source, sourceLen, level);
- if (ZSTD_isError(errorCode)) return Z_STREAM_ERROR;
- *destLen = errorCode;
+ size_t const cSize = ZSTD_compress(dest, dstCapacity, source, sourceLen, level);
+ if (ZSTD_isError(cSize)) return Z_STREAM_ERROR;
+ *destLen = cSize;
}
return Z_OK;
}
@@ -1024,13 +1024,13 @@
ZEXTERN int ZEXPORT z_uncompress OF((Bytef *dest, uLongf *destLen,
const Bytef *source, uLong sourceLen))
{
- if (sourceLen < 4 || MEM_readLE32(source) != ZSTD_MAGICNUMBER)
+ if (!ZSTD_isFrame(source, sourceLen))
return uncompress(dest, destLen, source, sourceLen);
{ size_t dstCapacity = *destLen;
- size_t const errorCode = ZSTD_decompress(dest, dstCapacity, source, sourceLen);
- if (ZSTD_isError(errorCode)) return Z_STREAM_ERROR;
- *destLen = errorCode;
+ size_t const dSize = ZSTD_decompress(dest, dstCapacity, source, sourceLen);
+ if (ZSTD_isError(dSize)) return Z_STREAM_ERROR;
+ *destLen = dSize;
}
return Z_OK;
}