diff --git a/common/lz4/lz4hc.c b/common/lz4/lz4hc.c index 6c047f221..6e74164a5 100644 --- a/common/lz4/lz4hc.c +++ b/common/lz4/lz4hc.c @@ -61,6 +61,12 @@ # pragma clang diagnostic ignored "-Wunused-function" #endif +#if defined(__clang__) || defined (__GNUC__) +# define ATTRIBUTE_NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address)) +#else +# define ATTRIBUTE_NO_SANITIZE_ADDRESS +#endif + /*=== Enums ===*/ typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; @@ -980,7 +986,10 @@ int LZ4_freeStreamHC(LZ4_streamHC_t *LZ4_streamHCPtr) { return 0; } - +// Skip AddressSanitizer which breaks compilation strangely on +// lz4/lz4hc.c: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=] +// | LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = 0; +ATTRIBUTE_NO_SANITIZE_ADDRESS LZ4_streamHC_t *LZ4_initStreamHC(void *buffer, size_t size) { LZ4_streamHC_t *const LZ4_streamHCPtr = (LZ4_streamHC_t *)buffer; if (buffer == NULL) return NULL;