X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e15dde39639521641eef1508c2de56ebd5ac319..77f4f0a700031e1c1fa4ece26df44f3af49b7545:/src/common/ffile.cpp diff --git a/src/common/ffile.cpp b/src/common/ffile.cpp index 42a43f2cb4..2fa5abeff7 100644 --- a/src/common/ffile.cpp +++ b/src/common/ffile.cpp @@ -113,16 +113,21 @@ bool wxFFile::ReadAll(wxString *str, wxMBConv& conv) clearerr(m_fp); - const size_t fileLen = Length(); - wxCharBuffer buf(fileLen + 1); - if ( (fread(buf.data(), sizeof(char), fileLen, m_fp) < fileLen) || Error() ) + wxCharBuffer buf(length + 1); + + // note that real length may be less than file length for text files with DOS EOLs + // ('\r's get dropped by CRT when reading which means that we have + // realLen = fileLen - numOfLinesInTheFile) + length = fread(buf.data(), sizeof(char), length, m_fp); + + if ( Error() ) { wxLogSysError(_("Read error on file '%s'"), m_name.c_str()); return false; } - buf.data()[fileLen] = 0; + buf.data()[length] = 0; *str = wxString(buf, conv); return true; @@ -130,8 +135,8 @@ bool wxFFile::ReadAll(wxString *str, wxMBConv& conv) size_t wxFFile::Read(void *pBuf, size_t nCount) { - wxCHECK_MSG( pBuf, FALSE, wxT("invalid parameter") ); - wxCHECK_MSG( IsOpened(), FALSE, wxT("can't read from closed file") ); + wxCHECK_MSG( pBuf, 0, wxT("invalid parameter") ); + wxCHECK_MSG( IsOpened(), 0, wxT("can't read from closed file") ); size_t nRead = fread(pBuf, 1, nCount, m_fp); if ( (nRead < nCount) && Error() ) @@ -144,8 +149,8 @@ size_t wxFFile::Read(void *pBuf, size_t nCount) size_t wxFFile::Write(const void *pBuf, size_t nCount) { - wxCHECK_MSG( pBuf, FALSE, wxT("invalid parameter") ); - wxCHECK_MSG( IsOpened(), FALSE, wxT("can't write to closed file") ); + wxCHECK_MSG( pBuf, 0, wxT("invalid parameter") ); + wxCHECK_MSG( IsOpened(), 0, wxT("can't write to closed file") ); size_t nWritten = fwrite(pBuf, 1, nCount, m_fp); if ( nWritten < nCount )