summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorljfa-ag <ljfa-ag@web.de>2015-09-15 08:17:01 +0200
committerljfa-ag <ljfa-ag@web.de>2015-09-15 12:03:03 +0200
commitc61cb502c1bb06b5ff93a6766c500c17f1e7dcc0 (patch)
treef5e3db812e574694056f9a4610b68149fabd16d8 /src
parentf3cd19f1fa88b2bc33bfb96fb6c877a4d62c5c97 (diff)
downloadProject-Tick-c61cb502c1bb06b5ff93a6766c500c17f1e7dcc0.tar.gz
Project-Tick-c61cb502c1bb06b5ff93a6766c500c17f1e7dcc0.zip
No output doesn't necessarily mean EOF
Diffstat (limited to 'src')
-rw-r--r--src/io/izlibstream.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/io/izlibstream.cpp b/src/io/izlibstream.cpp
index 632f0cf7c6..9079489507 100644
--- a/src/io/izlibstream.cpp
+++ b/src/io/izlibstream.cpp
@@ -65,6 +65,7 @@ inflate_streambuf::int_type inflate_streambuf::underflow()
zstr.avail_out = out.size();
int ret = inflate(&zstr, Z_NO_FLUSH);
+ have = out.size() - zstr.avail_out;
switch(ret)
{
case Z_NEED_DICT:
@@ -73,10 +74,11 @@ inflate_streambuf::int_type inflate_streambuf::underflow()
case Z_MEM_ERROR:
throw std::bad_alloc();
case Z_STREAM_END:
- return traits_type::eof();
+ if(have == 0)
+ return traits_type::eof();
+ break;
}
- have = out.size() - zstr.avail_out;
} while(have == 0);
setg(out.data(), out.data(), out.data() + have);