X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f44eaed6506856d3aece4b75d13253810a7a9edb..cb0791531fff2f3673e28d68be67a0ee5398a036:/src/common/zipstrm.cpp?ds=sidebyside diff --git a/src/common/zipstrm.cpp b/src/common/zipstrm.cpp index 0242e35799..63b941e3a4 100644 --- a/src/common/zipstrm.cpp +++ b/src/common/zipstrm.cpp @@ -470,7 +470,6 @@ class wxZipMemory { public: wxZipMemory() : m_data(NULL), m_size(0), m_capacity(0), m_ref(1) { } - ~wxZipMemory() { delete m_data; } wxZipMemory *AddRef() { m_ref++; return this; } void Release() { if (--m_ref == 0) delete this; } @@ -482,6 +481,7 @@ public: wxZipMemory *Unique(size_t size); private: + ~wxZipMemory() { delete m_data; } char *m_data; size_t m_size; @@ -548,7 +548,6 @@ class wxZipWeakLinks { public: wxZipWeakLinks() : m_ref(1) { } - ~wxZipWeakLinks() { wxASSERT(IsEmpty()); } void Release(const wxZipInputStream* WXUNUSED(x)) { if (--m_ref == 0) delete this; } @@ -562,6 +561,7 @@ public: bool IsEmpty() const { return m_entries.empty(); } private: + ~wxZipWeakLinks() { wxASSERT(IsEmpty()); } int m_ref; _wxOffsetZipEntryMap m_entries; @@ -1147,7 +1147,6 @@ class wxZipStreamLink { public: wxZipStreamLink(wxZipOutputStream *stream) : m_ref(1), m_stream(stream) { } - ~wxZipStreamLink() { } wxZipStreamLink *AddRef() { m_ref++; return this; } wxZipOutputStream *GetOutputStream() const { return m_stream; } @@ -1158,6 +1157,7 @@ public: { m_stream = NULL; if (--m_ref == 0) delete this; } private: + ~wxZipStreamLink() { } int m_ref; wxZipOutputStream *m_stream; @@ -1351,6 +1351,9 @@ bool wxZipInputStream::LoadEndRecord() // bool wxZipInputStream::FindEndRecord() { + if (!m_parent_i_stream->IsSeekable()) + return false; + // usually it's 22 bytes in size and the last thing in the file { wxLogNull nolog; @@ -1917,7 +1920,7 @@ bool wxZipOutputStream::DoCreate(wxZipEntry *entry, bool raw /*=false*/) ds << LOCAL_MAGIC; // and if this is the first entry test for seekability - if (m_headerOffset == 0) { + if (m_headerOffset == 0 && m_parent_o_stream->IsSeekable()) { bool logging = wxLog::IsEnabled(); wxLogNull nolog; wxFileOffset here = m_parent_o_stream->TellO();