]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fileconf.cpp
mac encodings support
[wxWidgets.git] / src / common / fileconf.cpp
index 9899d67a9dcf89292da137ca6e2afa2245aeaff4..071b90f243423f33a7478da46acdfd8945410338 100644 (file)
@@ -494,10 +494,21 @@ wxFileConfig::wxFileConfig(wxInputStream &inStream, wxMBConv& conv)
         wxString strTmp;
 
         char buf[1024];
-        while ( !inStream.Read(buf, WXSIZEOF(buf)).Eof() )
-            strTmp.append(wxConvertMB2WX(buf), inStream.LastRead());
+        do
+        {
+            inStream.Read(buf, WXSIZEOF(buf));
+
+            const wxStreamError err = inStream.GetLastError();
 
-        strTmp.append(wxConvertMB2WX(buf), inStream.LastRead());
+            if ( err != wxSTREAM_NO_ERROR && err != wxSTREAM_EOF )
+            {
+                wxLogError(_("Error reading config options."));
+                break;
+            }
+
+            strTmp.append(wxConvertMB2WX(buf), inStream.LastRead());
+        }
+        while ( !inStream.Eof() );
 
         strTrans = wxTextBuffer::Translate(strTmp);
     }
@@ -1090,8 +1101,11 @@ bool wxFileConfig::DeleteAll()
 {
   CleanUp();
 
-  if ( wxRemove(m_strLocalFile) == -1 )
-    wxLogSysError(_("can't delete user configuration file '%s'"), m_strLocalFile.c_str());
+  if ( wxFile::Exists(m_strLocalFile) && wxRemove(m_strLocalFile) == -1 )
+  {
+      wxLogSysError(_("can't delete user configuration file '%s'"), m_strLocalFile.c_str());
+      return FALSE;
+  }
 
   m_strLocalFile = m_strGlobalFile = wxT("");
   Init();