]> git.saurik.com Git - wxWidgets.git/commitdiff
fix some possible crashes due to uninitialized variables - thanks to Steve Hartwell...
authorRyan Norton <wxprojects@comcast.net>
Sun, 17 Apr 2005 14:08:43 +0000 (14:08 +0000)
committerRyan Norton <wxprojects@comcast.net>
Sun, 17 Apr 2005 14:08:43 +0000 (14:08 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33705 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/mimetmac.cpp

index 8ff9ad041650bef0dbb7ce26c6128d1b59e99453..ff77f1c44153299dad27ad282b331f1a75c06162 100644 (file)
@@ -322,11 +322,15 @@ class WXDLLEXPORT wxIcon;
 
 bool wxFileTypeImpl::SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt)
 {
 
 bool wxFileTypeImpl::SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt)
 {
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
+
     return FALSE;
 }
 
 bool wxFileTypeImpl::SetDefaultIcon(const wxString& strIcon, int index)
 {
     return FALSE;
 }
 
 bool wxFileTypeImpl::SetDefaultIcon(const wxString& strIcon, int index)
 {
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
+
     return FALSE;
 }
 
     return FALSE;
 }
 
@@ -372,10 +376,7 @@ wxFileTypeImpl::GetPrintCommand(wxString *printCmd,
 
 wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
 {
 
 wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
 {
-    wxASSERT(m_manager);
-    
-    if(!m_manager)
-        return wxEmptyString;
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
         
     if(verb == wxT("open"))
     {
         
     if(verb == wxT("open"))
     {
@@ -421,10 +422,7 @@ wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
 
 wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
 {
 
 wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
 {
-    wxASSERT(m_manager);
-    
-    if(!m_manager)
-        return wxEmptyString;
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
         
     if(verb == wxT("open"))
     {
         
     if(verb == wxT("open"))
     {
@@ -486,8 +484,7 @@ wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
 
 bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions)
 {
 
 bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions)
 {
-    if(!m_manager)
-        return false;
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
     
     ICMapEntry entry;
     ICGetMapEntry( (ICInstance) m_manager->m_hIC, 
     
     ICMapEntry entry;
     ICGetMapEntry( (ICInstance) m_manager->m_hIC, 
@@ -502,8 +499,7 @@ bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions)
 
 bool wxFileTypeImpl::GetMimeType(wxString *mimeType) const
 {
 
 bool wxFileTypeImpl::GetMimeType(wxString *mimeType) const
 {
-    if(!m_manager)
-        return false;
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
     
     ICMapEntry entry;
     ICGetMapEntry( (ICInstance) m_manager->m_hIC, 
     
     ICMapEntry entry;
     ICGetMapEntry( (ICInstance) m_manager->m_hIC, 
@@ -530,14 +526,15 @@ bool wxFileTypeImpl::GetMimeTypes(wxArrayString& mimeTypes) const
 
 bool wxFileTypeImpl::GetIcon(wxIconLocation *WXUNUSED(icon)) const
 {
 
 bool wxFileTypeImpl::GetIcon(wxIconLocation *WXUNUSED(icon)) const
 {
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
+
     // no such file type or no value or incorrect icon entry
     return FALSE;
 }
 
 bool wxFileTypeImpl::GetDescription(wxString *desc) const
 {
     // no such file type or no value or incorrect icon entry
     return FALSE;
 }
 
 bool wxFileTypeImpl::GetDescription(wxString *desc) const
 {
-    if(!m_manager)
-        return false;
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
     
     ICMapEntry entry;
     ICGetMapEntry( (ICInstance) m_manager->m_hIC, 
     
     ICMapEntry entry;
     ICGetMapEntry( (ICInstance) m_manager->m_hIC, 
@@ -551,8 +548,19 @@ bool wxFileTypeImpl::GetDescription(wxString *desc) const
 size_t wxFileTypeImpl::GetAllCommands(wxArrayString * verbs, wxArrayString * commands,
                    const wxFileType::MessageParameters& params) const
 {
 size_t wxFileTypeImpl::GetAllCommands(wxArrayString * verbs, wxArrayString * commands,
                    const wxFileType::MessageParameters& params) const
 {
-    wxFAIL_MSG( _T("wxFileTypeImpl::GetAllCommands() not yet implemented") );
-    return 0;
+    wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
+
+    wxString sCommand;
+    size_t ulCount = 0;
+    
+    if(GetOpenCommand(&sCommand, params))
+    {
+        verbs->Add(wxString(wxT("open")));
+        commands->Add(sCommand);
+        ++ulCount;
+    }
+    
+    return ulCount;
 }
 
 void wxMimeTypesManagerImpl::Initialize(int mailcapStyles, const wxString& extraDir)
 }
 
 void wxMimeTypesManagerImpl::Initialize(int mailcapStyles, const wxString& extraDir)
@@ -570,6 +578,7 @@ void wxMimeTypesManagerImpl::Initialize(int mailcapStyles, const wxString& extra
     {
         wxLogDebug(wxT("Could not initialize wxMimeTypesManager!"));
         wxASSERT( false );
     {
         wxLogDebug(wxT("Could not initialize wxMimeTypesManager!"));
         wxASSERT( false );
+        m_hIC = NULL;
         return;
     }
     
         return;
     }
     
@@ -633,6 +642,11 @@ void wxMimeTypesManagerImpl::ClearData()
     }
 }
 
     }
 }
 
+//
+//  Q) Iterating through the map - why does it use if (err == noErr) instead of just asserting?
+//  A) Some intermediate indexes are bad while subsequent ones may be good.  Its wierd, I know.
+//
+
 // extension -> file type
 wxFileType* wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& e)
 {
 // extension -> file type
 wxFileType* wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& e)
 {
@@ -640,7 +654,6 @@ wxFileType* wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& e)
     
     //low level functions - iterate through the database    
     ICMapEntry entry;
     
     //low level functions - iterate through the database    
     ICMapEntry entry;
-    wxFileType* pFileType;
     long pos;
     
     for(long i = 1; i <= m_lCount; ++i)
     long pos;
     
     for(long i = 1; i <= m_lCount; ++i)
@@ -652,14 +665,14 @@ wxFileType* wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& e)
             wxString sCurrentExtension = wxMacMakeStringFromPascal(entry.extension);
             if( sCurrentExtension.Right(sCurrentExtension.Length()-1) == e ) //entry has period in it
             {
             wxString sCurrentExtension = wxMacMakeStringFromPascal(entry.extension);
             if( sCurrentExtension.Right(sCurrentExtension.Length()-1) == e ) //entry has period in it
             {
-                pFileType = new wxFileType();
+                wxFileType* pFileType = new wxFileType();
                 pFileType->m_impl->Init((wxMimeTypesManagerImpl*)this, pos);
                 pFileType->m_impl->Init((wxMimeTypesManagerImpl*)this, pos);
-                break;
+                return pFileType;
             }
         }
     }
     
             }
         }
     }
     
-    return pFileType;    
+    return NULL;    
 }
 
 // MIME type -> extension -> file type
 }
 
 // MIME type -> extension -> file type
@@ -669,8 +682,6 @@ wxFileType* wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mime
 
     //low level functions - iterate through the database    
     ICMapEntry entry;
 
     //low level functions - iterate through the database    
     ICMapEntry entry;
-    wxFileType* pFileType;
-    
     long pos;
     
     for(long i = 1; i <= m_lCount; ++i)
     long pos;
     
     for(long i = 1; i <= m_lCount; ++i)
@@ -682,14 +693,14 @@ wxFileType* wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mime
         {        
             if( wxMacMakeStringFromPascal(entry.MIMEType) == mimeType)
             {
         {        
             if( wxMacMakeStringFromPascal(entry.MIMEType) == mimeType)
             {
-                pFileType = new wxFileType();
+                wxFileType* pFileType = new wxFileType();
                 pFileType->m_impl->Init((wxMimeTypesManagerImpl*)this, pos);
                 pFileType->m_impl->Init((wxMimeTypesManagerImpl*)this, pos);
-                break;
+                return pFileType;
             }
         }
     }
     
             }
         }
     }
     
-    return pFileType;
+    return NULL;
 }
 
 size_t wxMimeTypesManagerImpl::EnumAllFileTypes(wxArrayString& mimetypes)
 }
 
 size_t wxMimeTypesManagerImpl::EnumAllFileTypes(wxArrayString& mimetypes)
@@ -698,8 +709,8 @@ size_t wxMimeTypesManagerImpl::EnumAllFileTypes(wxArrayString& mimetypes)
 
     //low level functions - iterate through the database    
     ICMapEntry entry;
 
     //low level functions - iterate through the database    
     ICMapEntry entry;
-    
     long pos;
     long pos;
+    
     long lStartCount = (long) mimetypes.GetCount();
     
     for(long i = 1; i <= m_lCount; ++i)
     long lStartCount = (long) mimetypes.GetCount();
     
     for(long i = 1; i <= m_lCount; ++i)