]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wfstream.cpp
fixed bug with lower-case colours in wxColourDatabase::AddColour() (patch 1074865)
[wxWidgets.git] / src / common / wfstream.cpp
index a1b94af437675ec9eef582a02ff605c07c143dc5..af90722dd08a861976ba447d718f07e95b059f09 100644 (file)
@@ -62,14 +62,14 @@ wxFileInputStream::~wxFileInputStream()
         delete m_file;
 }
 
-size_t wxFileInputStream::GetSize() const
+wxFileOffset wxFileInputStream::GetLength() const
 {
     return m_file->Length();
 }
 
 size_t wxFileInputStream::OnSysRead(void *buffer, size_t size)
 {
-    size_t ret = m_file->Read(buffer, size);
+    ssize_t ret = m_file->Read(buffer, size);
 
     // NB: we can't use a switch here because HP-UX CC doesn't allow
     //     switching over long long (which size_t is in 64bit mode)
@@ -79,7 +79,7 @@ size_t wxFileInputStream::OnSysRead(void *buffer, size_t size)
         // nothing read, so nothing more to read
         m_lasterror = wxSTREAM_EOF;
     }
-    else if ( ret == (size_t)wxInvalidOffset )
+    else if ( ret == wxInvalidOffset )
     {
         m_lasterror = wxSTREAM_READ_ERROR;
         ret = 0;
@@ -176,7 +176,7 @@ void wxFileOutputStream::Sync()
     m_file->Flush();
 }
 
-size_t wxFileOutputStream::GetSize() const
+wxFileOffset wxFileOutputStream::GetLength() const
 {
     return m_file->Length();
 }
@@ -227,18 +227,19 @@ wxFFileInputStream::~wxFFileInputStream()
         delete m_file;
 }
 
-size_t wxFFileInputStream::GetSize() const
+wxFileOffset wxFFileInputStream::GetLength() const
 {
     return m_file->Length();
 }
 
 size_t wxFFileInputStream::OnSysRead(void *buffer, size_t size)
 {
-    size_t ret = m_file->Read(buffer, size);
+    ssize_t ret = m_file->Read(buffer, size);
 
-    if (m_file->Eof())
+    // It is not safe to call Eof() if the file is not opened.
+    if (!m_file->IsOpened() || m_file->Eof())
         m_lasterror = wxSTREAM_EOF;
-    if (ret == (size_t)wxInvalidOffset)
+    if (ret == wxInvalidOffset)
     {
         m_lasterror = wxSTREAM_READ_ERROR;
         ret = 0;
@@ -252,7 +253,8 @@ wxFileOffset wxFFileInputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
 #ifdef __VMS
 #pragma message disable intsignchange
 #endif
-   return ( m_file->Seek(pos, mode) ? (wxFileOffset)m_file->Tell() : wxInvalidOffset );
+    wxASSERT_MSG( pos >= LONG_MIN && pos <= LONG_MAX, _T("no huge wxFFile support") );
+    return ( m_file->Seek((long)pos, mode) ? (wxFileOffset)m_file->Tell() : wxInvalidOffset );
 #ifdef __VMS
 #pragma message enable intsignchange
 #endif
@@ -314,7 +316,8 @@ wxFFileOutputStream::~wxFFileOutputStream()
 size_t wxFFileOutputStream::OnSysWrite(const void *buffer, size_t size)
 {
     size_t ret = m_file->Write(buffer, size);
-    if (m_file->Error())
+    // It is not safe to call Error() if the file is not opened.
+    if (!m_file->IsOpened() || m_file->Error())
         m_lasterror = wxSTREAM_WRITE_ERROR;
     else
         m_lasterror = wxSTREAM_NO_ERROR;
@@ -331,7 +334,8 @@ wxFileOffset wxFFileOutputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
 #ifdef __VMS
 #pragma message disable intsignchange
 #endif
-    return ( m_file->Seek(pos, mode) ? (wxFileOffset)m_file->Tell() : wxInvalidOffset );
+    wxASSERT_MSG( pos >= LONG_MIN && pos <= LONG_MAX, _T("no huge wxFFile support") );
+    return ( m_file->Seek((long)pos, mode) ? (wxFileOffset)m_file->Tell() : wxInvalidOffset );
 #ifdef __VMS
 #pragma message enable intsignchange
 #endif
@@ -343,7 +347,7 @@ void wxFFileOutputStream::Sync()
     m_file->Flush();
 }
 
-size_t wxFFileOutputStream::GetSize() const
+wxFileOffset wxFFileOutputStream::GetLength() const
 {
     return m_file->Length();
 }