]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed bug in ReadAll(): it always returned error when reading files with DOS EOLs...
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 3 Mar 2005 13:46:42 +0000 (13:46 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 3 Mar 2005 13:46:42 +0000 (13:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/ffile.cpp

index 42a43f2cb4865b3fc93e2f1630d92768654af9fc..78cf20c8c3801e9c6b7b64f56f7c941b12a03b2d 100644 (file)
@@ -115,14 +115,20 @@ bool wxFFile::ReadAll(wxString *str, wxMBConv& conv)
 
     const size_t fileLen = Length();
     wxCharBuffer buf(fileLen + 1);
-    if ( (fread(buf.data(), sizeof(char), fileLen, m_fp) < fileLen) || Error() ) 
+
+    // note that realLen may be less than fileLen for text files with DOS EOLs
+    // ('\r's get dropped by CRT when reading which means that we have
+    // realLen = fileLen - numOfLinesInTheFile)
+    size_t realLen = fread(buf.data(), sizeof(char), fileLen, m_fp);
+
+    if ( Error() ) 
     {
         wxLogSysError(_("Read error on file '%s'"), m_name.c_str());
 
         return false;
     }
 
-    buf.data()[fileLen] = 0;
+    buf.data()[realLen] = 0;
     *str = wxString(buf, conv);
 
     return true;