X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..43a997b6e2064a189fa73ca1816908fb740ce297:/src/common/wfstream.cpp?ds=inline diff --git a/src/common/wfstream.cpp b/src/common/wfstream.cpp index b28617d537..2b2e68dc6f 100644 --- a/src/common/wfstream.cpp +++ b/src/common/wfstream.cpp @@ -69,17 +69,21 @@ size_t wxFileInputStream::GetSize() const size_t wxFileInputStream::OnSysRead(void *buffer, size_t size) { - off_t ret; - - ret = m_file->Read(buffer, size); + off_t ret = m_file->Read(buffer, size); - m_lasterror = wxStream_NOERROR; - if (m_file->Eof()) - m_lasterror = wxStream_EOF; - if (ret == wxInvalidOffset) + switch ( ret ) { - m_lasterror = wxStream_READ_ERR; - ret = 0; + case 0: + m_lasterror = wxSTREAM_EOF; + break; + + case wxInvalidOffset: + m_lasterror = wxSTREAM_READ_ERROR; + ret = 0; + break; + + default: + m_lasterror = wxSTREAM_NO_ERROR; } return ret; @@ -103,6 +107,16 @@ wxFileOutputStream::wxFileOutputStream(const wxString& fileName) { m_file = new wxFile(fileName, wxFile::write); m_file_destroy = TRUE; + + if (!m_file->IsOpened()) + { + m_lasterror = wxSTREAM_WRITE_ERROR; + } + else + { + if (m_file->Error()) + m_lasterror = wxSTREAM_WRITE_ERROR; + } } wxFileOutputStream::wxFileOutputStream(wxFile& file) @@ -112,7 +126,7 @@ wxFileOutputStream::wxFileOutputStream(wxFile& file) } wxFileOutputStream::wxFileOutputStream() - : wxOutputStream() + : wxOutputStream() { m_file_destroy = FALSE; m_file = NULL; @@ -126,7 +140,7 @@ wxFileOutputStream::wxFileOutputStream(int fd) wxFileOutputStream::~wxFileOutputStream() { - if (m_file_destroy) + if (m_file_destroy) { Sync(); delete m_file; @@ -136,10 +150,9 @@ wxFileOutputStream::~wxFileOutputStream() size_t wxFileOutputStream::OnSysWrite(const void *buffer, size_t size) { size_t ret = m_file->Write(buffer, size); - if (m_file->Error()) - m_lasterror = wxStream_WRITE_ERR; - else - m_lasterror = wxStream_NOERROR; + + m_lasterror = m_file->Error() ? wxSTREAM_WRITE_ERROR : wxSTREAM_NO_ERROR; + return ret; } @@ -223,7 +236,7 @@ size_t wxFFileInputStream::OnSysRead(void *buffer, size_t size) if (m_file->Eof()) m_lasterror = wxStream_EOF; - if (ret == wxInvalidOffset) + if (ret == wxInvalidOffset) { m_lasterror = wxStream_READ_ERR; ret = 0; @@ -234,7 +247,7 @@ size_t wxFFileInputStream::OnSysRead(void *buffer, size_t size) off_t wxFFileInputStream::OnSysSeek(off_t pos, wxSeekMode mode) { - return m_file->Seek(pos, mode); + return ( m_file->Seek(pos, mode) ? pos : wxInvalidOffset ); } off_t wxFFileInputStream::OnSysTell() const @@ -250,6 +263,16 @@ wxFFileOutputStream::wxFFileOutputStream(const wxString& fileName) { m_file = new wxFFile(fileName, "w+b"); m_file_destroy = TRUE; + + if (!m_file->IsOpened()) + { + m_lasterror = wxSTREAM_WRITE_ERROR; + } + else + { + if (m_file->Error()) + m_lasterror = wxSTREAM_WRITE_ERROR; + } } wxFFileOutputStream::wxFFileOutputStream(wxFFile& file) @@ -273,7 +296,7 @@ wxFFileOutputStream::wxFFileOutputStream(FILE *file) wxFFileOutputStream::~wxFFileOutputStream() { - if (m_file_destroy) + if (m_file_destroy) { Sync(); delete m_file; @@ -297,7 +320,7 @@ off_t wxFFileOutputStream::OnSysTell() const off_t wxFFileOutputStream::OnSysSeek(off_t pos, wxSeekMode mode) { - return m_file->Seek(pos, mode); + return ( m_file->Seek(pos, mode) ? pos : wxInvalidOffset ); } void wxFFileOutputStream::Sync()