summaryrefslogtreecommitdiffstats
path: root/src/cc4group.c
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2019-04-17 12:10:39 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2019-04-17 12:10:39 +0200
commitf5aa085db227849849f886d5312bfd2ce42e943c (patch)
tree22bf426b83622ff7daff81e8558834209bcaed1b /src/cc4group.c
parent19b23eafe4d8039e30bc4f49a4c04ebea9e85cda (diff)
downloadcc4group-f5aa085db227849849f886d5312bfd2ce42e943c.tar.gz
cc4group-f5aa085db227849849f886d5312bfd2ce42e943c.zip
Fix error handling of deflate
Diffstat (limited to 'src/cc4group.c')
-rw-r--r--src/cc4group.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/cc4group.c b/src/cc4group.c
index 82e8df5..f040f23 100644
--- a/src/cc4group.c
+++ b/src/cc4group.c
@@ -1614,7 +1614,7 @@ static bool cc4group_deflateToCallback(WriteCallback* const callback, const void
callback->gzStream.next_in = (void*)data;
callback->gzStream.avail_in = size;
- int ret = Z_OK;
+ int ret = Z_BUF_ERROR;
// skip the gzip magic if not done yet
if(!callback->magicDone)
@@ -1627,10 +1627,6 @@ static bool cc4group_deflateToCallback(WriteCallback* const callback, const void
ret = deflate(&callback->gzStream, Z_NO_FLUSH);
}
- else if(size == 0)
- {
- ret = Z_BUF_ERROR;
- }
while(ret == Z_BUF_ERROR || callback->gzStream.avail_in > 0)
{
@@ -1645,6 +1641,11 @@ static bool cc4group_deflateToCallback(WriteCallback* const callback, const void
{
cc4group_flushBufferedWrite(callback);
}
+
+ if(ret == Z_STREAM_ERROR)
+ {
+ return false;
+ }
}
assert(callback->gzStream.avail_in == 0);