X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2a1f999fafa4312ccd47b7be65c672c2220fea36..c137ddc91f60c2b0f95765eab0e477644aa59057:/src/common/zstream.cpp diff --git a/src/common/zstream.cpp b/src/common/zstream.cpp index 8280bfbc0e..684ff82cfd 100644 --- a/src/common/zstream.cpp +++ b/src/common/zstream.cpp @@ -9,10 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "zstream.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -56,7 +52,7 @@ wxZlibInputStream::wxZlibInputStream(wxInputStream& stream, int flags) m_pos = 0; #if WXWIN_COMPATIBILITY_2_4 - // treat compatibilty mode as auto + // treat compatibility mode as auto m_24compatibilty = flags == wxZLIB_24COMPATIBLE; if (m_24compatibilty) flags = wxZLIB_AUTO; @@ -135,14 +131,17 @@ size_t wxZlibInputStream::OnSysRead(void *buffer, size_t size) break; case Z_STREAM_END: - // Unread any data taken from past the end of the deflate stream, so that - // any additional data can be read from the underlying stream (the crc - // in a gzip for example) - if (m_inflate->avail_in) { - m_parent_i_stream->Ungetch(m_inflate->next_in, m_inflate->avail_in); - m_inflate->avail_in = 0; + if (m_inflate->avail_out) { + // Unread any data taken from past the end of the deflate stream, so that + // any additional data can be read from the underlying stream (the crc + // in a gzip for example) + if (m_inflate->avail_in) { + m_parent_i_stream->Reset(); + m_parent_i_stream->Ungetch(m_inflate->next_in, m_inflate->avail_in); + m_inflate->avail_in = 0; + } + m_lasterror = wxSTREAM_EOF; } - m_lasterror = wxSTREAM_EOF; break; case Z_BUF_ERROR: