From 2b9fde932b53502ca6fb59d9a9d7ca781ffeae55 Mon Sep 17 00:00:00 2001 From: Chris Burgess <9002722+cgbur@users.noreply.github.com> Date: Fri, 29 Jul 2022 15:22:46 -0400 Subject: [PATCH] Fix small file passthrough (#3215) --- programs/fileio.c | 5 ++++- tests/playTests.sh | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/programs/fileio.c b/programs/fileio.c index a83b8064a..7a479069a 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -2346,7 +2346,10 @@ static int FIO_decompressFrames(FIO_ctx_t* const fCtx, break; /* no more input */ } readSomething = 1; /* there is at least 1 byte in srcFile */ - if (ress.readCtx->srcBufferLoaded < toRead) { + if (ress.readCtx->srcBufferLoaded < toRead) { /* not enough input to check magic number */ + if ((prefs->overwrite) && !strcmp (dstFileName, stdoutmark)) { /* pass-through mode */ + return FIO_passThrough(&ress); + } DISPLAYLEVEL(1, "zstd: %s: unknown header \n", srcFileName); return 1; } diff --git a/tests/playTests.sh b/tests/playTests.sh index 0e2b0fbb2..7c111e7a3 100755 --- a/tests/playTests.sh +++ b/tests/playTests.sh @@ -808,6 +808,16 @@ println "Hello world 1!" | zstd -df println "Hello world 2!" | zstd -dcf println "Hello world 3!" > tmp1 zstd -dcf tmp1 +println "" | zstd -df > tmp1 +println "" > tmp2 +$DIFF -q tmp1 tmp2 +println "1" | zstd -df > tmp1 +println "1" > tmp2 +$DIFF -q tmp1 tmp2 +println "12" | zstd -df > tmp1 +println "12" > tmp2 +$DIFF -q tmp1 tmp2 +rm -rf tmp* println "\n===> frame concatenation "