]> git.saurik.com Git - wxWidgets.git/commitdiff
When a directory can't accessed, don't assert, return false
authorJulian Smart <julian@anthemion.co.uk>
Fri, 19 Mar 2004 10:34:15 +0000 (10:34 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 19 Mar 2004 10:34:15 +0000 (10:34 +0000)
from wxDir and give a suppressable error message. This fixes
problems reading e.g. .vol directories.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/dirmac.cpp
src/mac/dirmac.cpp

index ff168bafdc552519c5b3fa534f0db7537ebf3110..0afc3b5cb3449184dcb1617631f138ce79d80ad0 100644 (file)
@@ -81,6 +81,7 @@ public:
     void Rewind() ;
 
     const wxString& GetName() const { return m_dirname; }
+    bool Ok() const { return m_ok; }
 
 private:
     CInfoPBRec            m_CPB ;
@@ -93,6 +94,7 @@ private:
     wxString m_filespec;
 
     int      m_flags;
+    bool     m_ok;
 };
 
 // ============================================================================
@@ -106,6 +108,8 @@ private:
 wxDirData::wxDirData(const wxString& dirname)
          : m_dirname(dirname)
 {
+    m_ok = false;
+    
     OSErr err;
     
     // throw away the trailing slashes
@@ -133,7 +137,11 @@ wxDirData::wxDirData(const wxString& dirname)
 
     err = FSpGetDirectoryID( &fsspec , &m_dirId , &m_isDir ) ;
 #endif
-    wxASSERT_MSG( (err == noErr) || (err == nsvErr) , wxT("Error accessing directory " + m_dirname)) ;
+    //wxASSERT_MSG( (err == noErr) || (err == nsvErr) , wxT("Error accessing directory " + m_dirname)) ;
+    if ( (err == noErr) || (err == nsvErr))
+        m_ok = true;
+    else
+        wxLogError(wxString(wxT("Error accessing directory ")) + m_dirname);
 
     m_CPB.hFileInfo.ioNamePtr = m_name ;
     m_index = 0 ;
@@ -247,8 +255,14 @@ bool wxDir::Open(const wxString& dirname)
 {
     delete M_DIR;
     m_data = new wxDirData(dirname);
-
-    return TRUE;
+    if (m_data->Ok())
+        return TRUE;
+    else
+    {
+        delete m_data;
+        m_data = NULL;
+        return FALSE;
+    }
 }
 
 bool wxDir::IsOpened() const
index ff168bafdc552519c5b3fa534f0db7537ebf3110..0afc3b5cb3449184dcb1617631f138ce79d80ad0 100644 (file)
@@ -81,6 +81,7 @@ public:
     void Rewind() ;
 
     const wxString& GetName() const { return m_dirname; }
+    bool Ok() const { return m_ok; }
 
 private:
     CInfoPBRec            m_CPB ;
@@ -93,6 +94,7 @@ private:
     wxString m_filespec;
 
     int      m_flags;
+    bool     m_ok;
 };
 
 // ============================================================================
@@ -106,6 +108,8 @@ private:
 wxDirData::wxDirData(const wxString& dirname)
          : m_dirname(dirname)
 {
+    m_ok = false;
+    
     OSErr err;
     
     // throw away the trailing slashes
@@ -133,7 +137,11 @@ wxDirData::wxDirData(const wxString& dirname)
 
     err = FSpGetDirectoryID( &fsspec , &m_dirId , &m_isDir ) ;
 #endif
-    wxASSERT_MSG( (err == noErr) || (err == nsvErr) , wxT("Error accessing directory " + m_dirname)) ;
+    //wxASSERT_MSG( (err == noErr) || (err == nsvErr) , wxT("Error accessing directory " + m_dirname)) ;
+    if ( (err == noErr) || (err == nsvErr))
+        m_ok = true;
+    else
+        wxLogError(wxString(wxT("Error accessing directory ")) + m_dirname);
 
     m_CPB.hFileInfo.ioNamePtr = m_name ;
     m_index = 0 ;
@@ -247,8 +255,14 @@ bool wxDir::Open(const wxString& dirname)
 {
     delete M_DIR;
     m_data = new wxDirData(dirname);
-
-    return TRUE;
+    if (m_data->Ok())
+        return TRUE;
+    else
+    {
+        delete m_data;
+        m_data = NULL;
+        return FALSE;
+    }
 }
 
 bool wxDir::IsOpened() const