From 1688e8cd57606f7aaeb0abddc8e9ce3827d253cc Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 27 Feb 2020 13:35:41 +0100 Subject: [PATCH] Fix error check for zlib calls There are multiple "okay" return values, not just Z_OK. Make sure we don't bail out needlessly. --- common/rdr/ZlibInStream.cxx | 2 +- common/rdr/ZlibOutStream.cxx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/rdr/ZlibInStream.cxx b/common/rdr/ZlibInStream.cxx index 9fcfaf6b..0fb3ad1e 100644 --- a/common/rdr/ZlibInStream.cxx +++ b/common/rdr/ZlibInStream.cxx @@ -141,7 +141,7 @@ bool ZlibInStream::decompress(bool wait) zs->avail_in = bytesIn; int rc = inflate(zs, Z_SYNC_FLUSH); - if (rc != Z_OK) { + if (rc < 0) { throw Exception("ZlibInStream: inflate failed"); } diff --git a/common/rdr/ZlibOutStream.cxx b/common/rdr/ZlibOutStream.cxx index 7a0d692c..99d0617a 100644 --- a/common/rdr/ZlibOutStream.cxx +++ b/common/rdr/ZlibOutStream.cxx @@ -159,7 +159,7 @@ void ZlibOutStream::deflate(int flush) #endif rc = ::deflate(zs, flush); - if (rc != Z_OK) { + if (rc < 0) { // Silly zlib returns an error if you try to flush something twice if ((rc == Z_BUF_ERROR) && (flush != Z_NO_FLUSH)) break; @@ -193,7 +193,7 @@ void ZlibOutStream::checkCompressionLevel() deflate(Z_SYNC_FLUSH); rc = deflateParams (zs, newLevel, Z_DEFAULT_STRATEGY); - if (rc != Z_OK) { + if (rc < 0) { // The implicit flush can result in this error, caused by the // explicit flush we did above. It should be safe to ignore though // as the first flush should have left things in a stable state... -- 2.39.5