Fix alpha for liquid nodes (#5494)
[oweals/minetest.git] / src / serialization.cpp
index c0fbe10e23335fb9cc8f2031dd8637e0cec548a3..d30e83726f307cac9d58f83c6f4f80d93d1ebac3 100644 (file)
@@ -20,7 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "serialization.h"
 
 #include "util/serialize.h"
-#ifdef _WIN32
+#if defined(_WIN32) && !defined(WIN32_NO_ZLIB_WINAPI)
        #define ZLIB_WINAPI
 #endif
 #include "zlib.h"
@@ -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();