Write all available uncompressed output upon encountering an error.
diff --git a/pigz.c b/pigz.c
index ce17dfa..e1c60b6 100644
--- a/pigz.c
+++ b/pigz.c
@@ -3485,6 +3485,9 @@
strm.next_in = Z_NULL;
ret = inflateBack(&strm, inb, NULL, outb, NULL);
inflateBackEnd(&strm);
+ g.in_left += strm.avail_in;
+ g.in_next = strm.next_in;
+ outb(NULL, NULL, 0); // finish off final write and check
if (ret == Z_DATA_ERROR)
throw(EDOM, "%s: corrupted -- invalid deflate data (%s)",
g.inf, strm.msg);
@@ -3492,9 +3495,6 @@
throw(EDOM, "%s: corrupted -- incomplete deflate data", g.inf);
if (ret != Z_STREAM_END)
throw(EINVAL, "internal error");
- g.in_left += strm.avail_in;
- g.in_next = strm.next_in;
- outb(NULL, NULL, 0); // finish off final write and check
// compute compressed data length
clen = g.in_tot - g.in_left;