]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fileback.cpp
Ensure that component levels map is initialized before it's used (closes #10990).
[wxWidgets.git] / src / common / fileback.cpp
index 06d32ae99e08d653c28d26dd074fe14b47e509c6..6e4253c0f76896fa8684a6ecee8724c5a603e4a4 100644 (file)
@@ -14,9 +14,9 @@
     #pragma hdrstop
 #endif
 
     #pragma hdrstop
 #endif
 
-#if wxUSE_BACKINGFILE
+#if wxUSE_FILESYSTEM
 
 
-#include "wx/fileback.h"
+#include "wx/private/fileback.h"
 
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
 
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
@@ -271,6 +271,29 @@ wxBackedInputStream::wxBackedInputStream(const wxBackingFile& backer)
 {
 }
 
 {
 }
 
+wxFileOffset wxBackedInputStream::GetLength() const
+{
+    return m_backer.m_impl->GetLength();
+}
+
+wxFileOffset wxBackedInputStream::FindLength() const
+{
+    wxFileOffset len = GetLength();
+
+    if (len == wxInvalidOffset && IsOk()) {
+        // read a byte at 7ff...ffe
+        wxFileOffset pos = 1;
+        pos <<= sizeof(pos) * 8 - 1;
+        pos = ~pos - 1;
+        char ch;
+        size_t size = 1;
+        m_backer.m_impl->ReadAt(pos, &ch, &size);
+        len = GetLength();
+    }
+
+    return len;
+}
+    
 size_t wxBackedInputStream::OnSysRead(void *buffer, size_t size)
 {
     if (!IsOk())
 size_t wxBackedInputStream::OnSysRead(void *buffer, size_t size)
 {
     if (!IsOk())
@@ -281,11 +304,6 @@ size_t wxBackedInputStream::OnSysRead(void *buffer, size_t size)
     return size;
 }
 
     return size;
 }
 
-wxFileOffset wxBackedInputStream::GetLength() const
-{
-    return m_backer.m_impl->GetLength();
-}
-
 wxFileOffset wxBackedInputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
 {
     switch (mode) {
 wxFileOffset wxBackedInputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
 {
     switch (mode) {
@@ -317,4 +335,4 @@ wxFileOffset wxBackedInputStream::OnSysTell() const
     return m_pos;
 }
 
     return m_pos;
 }
 
-#endif // wxUSE_BACKINGFILE
+#endif // wxUSE_FILESYSTEM