From 69ec75f0d5e028aa34b3b51f990f38a18a0b7783 Mon Sep 17 00:00:00 2001 From: Danielle Rozenblit Date: Tue, 13 Dec 2022 08:35:20 -0800 Subject: [PATCH 1/3] fix window resizing edge case --- lib/compress/zstd_compress.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 5bc7a9f3f..0069a7b1b 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -1370,8 +1370,8 @@ ZSTD_adjustCParams_internal(ZSTD_compressionParameters cPar, } /* resize windowLog if input is small enough, to use less memory */ - if ( (srcSize < maxWindowResize) - && (dictSize < maxWindowResize) ) { + if ( (srcSize <= maxWindowResize) + && (dictSize <= maxWindowResize) ) { U32 const tSize = (U32)(srcSize + dictSize); static U32 const hashSizeMin = 1 << ZSTD_HASHLOG_MIN; U32 const srcLog = (tSize < hashSizeMin) ? ZSTD_HASHLOG_MIN : From 32bb667138028f82170451a3260caffa51544e48 Mon Sep 17 00:00:00 2001 From: Danielle Rozenblit Date: Tue, 13 Dec 2022 12:45:41 -0800 Subject: [PATCH 2/3] added test to cli-tests --- tests/cli-tests/compression/window-resize.sh | 9 +++++++++ tests/cli-tests/compression/window-resize.sh.stderr.glob | 1 + tests/cli-tests/compression/window-resize.sh.stdout.glob | 3 +++ 3 files changed, 13 insertions(+) create mode 100755 tests/cli-tests/compression/window-resize.sh create mode 100644 tests/cli-tests/compression/window-resize.sh.stderr.glob create mode 100644 tests/cli-tests/compression/window-resize.sh.stdout.glob diff --git a/tests/cli-tests/compression/window-resize.sh b/tests/cli-tests/compression/window-resize.sh new file mode 100755 index 000000000..3b5e6fe24 --- /dev/null +++ b/tests/cli-tests/compression/window-resize.sh @@ -0,0 +1,9 @@ +#!/bin/sh +datagen -g1G > file +zstd --long=31 -1 --single-thread --no-content-size -f file +zstd -l -v file.zst + +# We want to ignore stderr (its outputting "*** zstd command line interface +# 64-bits v1.5.3, by Yann Collet ***") + +rm file file.zst diff --git a/tests/cli-tests/compression/window-resize.sh.stderr.glob b/tests/cli-tests/compression/window-resize.sh.stderr.glob new file mode 100644 index 000000000..eb1ae458f --- /dev/null +++ b/tests/cli-tests/compression/window-resize.sh.stderr.glob @@ -0,0 +1 @@ +... diff --git a/tests/cli-tests/compression/window-resize.sh.stdout.glob b/tests/cli-tests/compression/window-resize.sh.stdout.glob new file mode 100644 index 000000000..313d216e1 --- /dev/null +++ b/tests/cli-tests/compression/window-resize.sh.stdout.glob @@ -0,0 +1,3 @@ +... +Window Size: 1.000 GiB (1073741824 B) +... From 9b9ad5af3f78e517723277262cfd601d00ce4cd9 Mon Sep 17 00:00:00 2001 From: Danielle Rozenblit Date: Tue, 13 Dec 2022 13:52:54 -0800 Subject: [PATCH 3/3] use .ignore for stderr output in window-resize test case --- tests/cli-tests/compression/window-resize.sh.stderr.glob | 1 - tests/cli-tests/compression/window-resize.sh.stderr.ignore | 0 2 files changed, 1 deletion(-) delete mode 100644 tests/cli-tests/compression/window-resize.sh.stderr.glob create mode 100644 tests/cli-tests/compression/window-resize.sh.stderr.ignore diff --git a/tests/cli-tests/compression/window-resize.sh.stderr.glob b/tests/cli-tests/compression/window-resize.sh.stderr.glob deleted file mode 100644 index eb1ae458f..000000000 --- a/tests/cli-tests/compression/window-resize.sh.stderr.glob +++ /dev/null @@ -1 +0,0 @@ -... diff --git a/tests/cli-tests/compression/window-resize.sh.stderr.ignore b/tests/cli-tests/compression/window-resize.sh.stderr.ignore new file mode 100644 index 000000000..e69de29bb