diff --git a/src/serialization.cpp b/src/serialization.cpp index c0fbe10e23335fb9cc8f2031dd8637e0cec548a3..79f66fcaebb15b3c8d4fc2c2f21600c03d97b6e1 100644 --- a/src/serialization.cpp +++ b/src/serialization.cpp @@ -133,7 +133,8 @@ void decompressZlib(std::istream &is, std::ostream &os) if(z.avail_in == 0) { z.next_in = (Bytef*)input_buffer; - input_buffer_len = is.readsome(input_buffer, bufsize); + is.read(input_buffer, bufsize); + input_buffer_len = is.gcount(); z.avail_in = input_buffer_len; //dstream<<"read fail="<<is.fail()<<" bad="<<is.bad()<<std::endl; } @@ -166,6 +167,7 @@ void decompressZlib(std::istream &is, std::ostream &os) //dstream<<"z.avail_in="<<z.avail_in<<std::endl; //dstream<<"fail="<<is.fail()<<" bad="<<is.bad()<<std::endl; // Unget all the data that inflate didn't take + is.clear(); // Just in case EOF is set for(u32 i=0; i < z.avail_in; i++) { is.unget();