]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/zipstrm.cpp
add extra space for top border when wxDIALOG_UNIT_COMPATIBILITY == 1 too
[wxWidgets.git] / src / common / zipstrm.cpp
index 1c10609715cc014d6fdc790afa46be4636624c88..37448574f61d9803006c299faf7a2bbef9eaa69b 100644 (file)
@@ -1746,7 +1746,12 @@ size_t wxZipInputStream::OnSysRead(void *buffer, size_t size)
 //
 wxFileOffset wxZipInputStream::OnSysSeek(wxFileOffset seek, wxSeekMode mode)
 {
-    if (!m_ffile || AtHeader())
+    if (!m_ffile)
+        return wxInvalidOffset;
+    if (!IsOpened())
+        if ((AtHeader() && !DoOpen()) || !OpenDecompressor())
+            m_lasterror = wxSTREAM_READ_ERROR;
+    if (!IsOk())
         return wxInvalidOffset;
 
     // NB: since ZIP files don't natively support seeking, we have to
@@ -1761,7 +1766,7 @@ wxFileOffset wxZipInputStream::OnSysSeek(wxFileOffset seek, wxSeekMode mode)
     {
         case wxFromCurrent : nextpos = seek + pos; break;
         case wxFromStart : nextpos = seek; break;
-        case wxFromEnd : nextpos = GetLength() - 1 + seek; break;
+        case wxFromEnd : nextpos = GetLength() + seek; break;
         default : nextpos = pos; break; /* just to fool compiler, never happens */
     }
 
@@ -1925,14 +1930,18 @@ bool wxZipOutputStream::DoCreate(wxZipEntry *entry, bool raw /*=false*/)
 
     // and if this is the first entry test for seekability
     if (m_headerOffset == 0 && m_parent_o_stream->IsSeekable()) {
+#if wxUSE_LOG
         bool logging = wxLog::IsEnabled();
         wxLogNull nolog;
+#endif // wxUSE_LOG
         wxFileOffset here = m_parent_o_stream->TellO();
 
         if (here != wxInvalidOffset && here >= 4) {
             if (m_parent_o_stream->SeekO(here - 4) == here - 4) {
                 m_offsetAdjustment = here - 4;
+#if wxUSE_LOG
                 wxLog::EnableLogging(logging);
+#endif // wxUSE_LOG
                 m_parent_o_stream->SeekO(here);
             }
         }