diff options
author | Yann Collet <cyan@fb.com> | 2022-09-14 01:17:53 (GMT) |
---|---|---|
committer | Yann Collet <cyan@fb.com> | 2022-09-16 16:34:15 (GMT) |
commit | 7f54a56413c3e09e19925c93cf248b5a9b4acf48 (patch) | |
tree | aa7116d4258c9643050bfc3294eaf4a1e8163841 /lib | |
parent | 2c8fd1142a9bf025d14be732be00f34ad33af131 (diff) | |
download | lz4-7f54a56413c3e09e19925c93cf248b5a9b4acf48.zip lz4-7f54a56413c3e09e19925c93cf248b5a9b4acf48.tar.gz lz4-7f54a56413c3e09e19925c93cf248b5a9b4acf48.tar.bz2 |
fixed minor UB warning
now, even intermediate ptr arithmetic results can be UB ??
Diffstat (limited to 'lib')
-rw-r--r-- | lib/lz4hc.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/lz4hc.c b/lib/lz4hc.c index fa3e014..446f55d 100644 --- a/lib/lz4hc.c +++ b/lib/lz4hc.c @@ -312,7 +312,7 @@ LZ4HC_InsertAndGetWiderMatch ( matchLength -= back; if (matchLength > longest) { longest = matchLength; - *matchpos = prefixPtr - prefixIdx + matchIndex + back; /* virtual pos, relative to ip, to retrieve offset */ + *matchpos = prefixPtr + matchIndex - prefixIdx + back; /* virtual pos, relative to ip, to retrieve offset */ *startpos = ip + back; } } } @@ -437,7 +437,7 @@ LZ4HC_InsertAndGetWiderMatch ( mlt -= back; if (mlt > longest) { longest = mlt; - *matchpos = prefixPtr - prefixIdx + matchIndex + back; + *matchpos = prefixPtr - (prefixIdx - matchIndex) + back; *startpos = ip + back; DEBUGLOG(8, "found match of length %i at vPos=%i", longest, (int)matchIndex - (int)prefixIdx + back); } } @@ -803,16 +803,17 @@ static int LZ4HC_compress_optimal( LZ4HC_CCtx_internal* ctx, const HCfavor_e favorDecSpeed); -LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( - LZ4HC_CCtx_internal* const ctx, - const char* const src, - char* const dst, - int* const srcSizePtr, - int const dstCapacity, - int cLevel, - const limitedOutput_directive limit, - const dictCtx_directive dict - ) +LZ4_FORCE_INLINE int +LZ4HC_compress_generic_internal ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) { typedef enum { lz4hc, lz4opt } lz4hc_strat_e; typedef struct { |