diff --git a/programs/fileio.c b/programs/fileio.c index a83b8064..7a479069 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 0e2b0fbb..7c111e7a 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 "