]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/zipstrm.cpp
compilation fix for non PCH build
[wxWidgets.git] / src / common / zipstrm.cpp
index 0242e357996ba559a04d7c85df1a306ff631ed35..f9f9826428dc678dc707b157feb48cd6b2ab8a18 100644 (file)
@@ -34,7 +34,6 @@
 #include "wx/buffer.h"
 #include "wx/ptr_scpd.h"
 #include "wx/wfstream.h"
-#include "wx/html/forcelnk.h"
 #include "zlib.h"
 
 // value for the 'version needed to extract' field (20 means 2.0)
@@ -82,7 +81,12 @@ enum {
 IMPLEMENT_DYNAMIC_CLASS(wxZipEntry, wxArchiveEntry)
 IMPLEMENT_DYNAMIC_CLASS(wxZipClassFactory, wxArchiveClassFactory)
 
-FORCE_LINK_ME(zipstrm)
+//FORCE_LINK_ME(zipstrm)
+int _wx_link_dummy_func_zipstrm();
+int _wx_link_dummy_func_zipstrm()
+{
+    return 1;
+}
 
 
 /////////////////////////////////////////////////////////////////////////////
@@ -470,7 +474,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 +485,7 @@ public:
     wxZipMemory *Unique(size_t size);
 
 private:
+    ~wxZipMemory() { delete m_data; }
 
     char *m_data;
     size_t m_size;
@@ -548,7 +552,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 +565,7 @@ public:
     bool IsEmpty() const { return m_entries.empty(); }
 
 private:
+    ~wxZipWeakLinks() { wxASSERT(IsEmpty()); }
 
     int m_ref;
     _wxOffsetZipEntryMap m_entries;
@@ -1147,7 +1151,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 +1161,7 @@ public:
         { m_stream = NULL; if (--m_ref == 0) delete this; }
 
 private:
+    ~wxZipStreamLink() { }
 
     int m_ref;
     wxZipOutputStream *m_stream;
@@ -1351,6 +1355,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 +1924,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();