From f570609286c65e227ee1d43bc3bf746c05f4a09b Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Thu, 22 Jun 2017 18:09:42 -0700 Subject: [PATCH] [pzstd] Fix deadlock in the case of errors Fixes #720. --- contrib/pzstd/Pzstd.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/pzstd/Pzstd.cpp b/contrib/pzstd/Pzstd.cpp index 1265b53ef..ae5d73444 100644 --- a/contrib/pzstd/Pzstd.cpp +++ b/contrib/pzstd/Pzstd.cpp @@ -585,7 +585,10 @@ std::uint64_t writeFile( std::uint64_t bytesWritten = 0; std::shared_ptr out; // Grab the output queue for each decompression job (in order). - while (outs.pop(out) && !errorHolder.hasError()) { + while (outs.pop(out)) { + if (errorHolder.hasError()) { + continue; + } if (!decompress) { // If we are compressing and want to write skippable frames we can't // start writing before compression is done because we need to know the