don't use wxChar arrays and wxStrncpy (especially as the latter was used incorrectly) in Mac-specific type/creator code, just use wxString

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-11-29 13:51:09 +00:00
parent 601a5d6e72
commit 56ce942b62

View File

@@ -2404,52 +2404,51 @@ wxString wxFileName::GetHumanReadableSize(const wxString &failmsg, int precision
#if defined( __WXOSX_MAC__ ) && wxOSX_USE_CARBON #if defined( __WXOSX_MAC__ ) && wxOSX_USE_CARBON
const short kMacExtensionMaxLength = 16 ; namespace
{
class MacDefaultExtensionRecord class MacDefaultExtensionRecord
{ {
public : public:
MacDefaultExtensionRecord() MacDefaultExtensionRecord()
{ {
m_ext[0] = 0 ; m_type =
m_type = m_creator = 0 ; m_creator = 0 ;
} }
MacDefaultExtensionRecord( const MacDefaultExtensionRecord& from )
{
wxStrcpy( m_ext , from.m_ext ) ;
m_type = from.m_type ;
m_creator = from.m_creator ;
}
MacDefaultExtensionRecord( const wxChar * extension , OSType type , OSType creator )
{
wxStrncpy( m_ext , extension , kMacExtensionMaxLength ) ;
m_ext[kMacExtensionMaxLength] = 0 ;
m_type = type ;
m_creator = creator ;
}
wxChar m_ext[kMacExtensionMaxLength] ;
OSType m_type ;
OSType m_creator ;
} ;
WX_DECLARE_OBJARRAY(MacDefaultExtensionRecord, MacDefaultExtensionArray) ; // default copy ctor, assignment operator and dtor are ok
bool gMacDefaultExtensionsInited = false ; MacDefaultExtensionRecord(const wxString& ext, OSType type, OSType creator)
: m_ext(ext)
{
m_type = type;
m_creator = creator;
}
wxString m_ext;
OSType m_type;
OSType m_creator;
};
WX_DECLARE_OBJARRAY(MacDefaultExtensionRecord, MacDefaultExtensionArray);
bool gMacDefaultExtensionsInited = false;
#include "wx/arrimpl.cpp" #include "wx/arrimpl.cpp"
WX_DEFINE_EXPORTED_OBJARRAY(MacDefaultExtensionArray) ; WX_DEFINE_EXPORTED_OBJARRAY(MacDefaultExtensionArray);
MacDefaultExtensionArray gMacDefaultExtensions ; MacDefaultExtensionArray gMacDefaultExtensions;
// load the default extensions // load the default extensions
MacDefaultExtensionRecord gDefaults[] = const MacDefaultExtensionRecord gDefaults[] =
{ {
MacDefaultExtensionRecord( wxT("txt") , 'TEXT' , 'ttxt' ) , MacDefaultExtensionRecord( "txt", 'TEXT', 'ttxt' ),
MacDefaultExtensionRecord( wxT("tif") , 'TIFF' , '****' ) , MacDefaultExtensionRecord( "tif", 'TIFF', '****' ),
MacDefaultExtensionRecord( wxT("jpg") , 'JPEG' , '****' ) , MacDefaultExtensionRecord( "jpg", 'JPEG', '****' ),
} ; };
static void MacEnsureDefaultExtensionsLoaded() void MacEnsureDefaultExtensionsLoaded()
{ {
if ( !gMacDefaultExtensionsInited ) if ( !gMacDefaultExtensionsInited )
{ {
@@ -2458,10 +2457,12 @@ static void MacEnsureDefaultExtensionsLoaded()
{ {
gMacDefaultExtensions.Add( gDefaults[i] ) ; gMacDefaultExtensions.Add( gDefaults[i] ) ;
} }
gMacDefaultExtensionsInited = true ; gMacDefaultExtensionsInited = true;
} }
} }
} // anonymous namespace
bool wxFileName::MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) bool wxFileName::MacSetTypeAndCreator( wxUint32 type , wxUint32 creator )
{ {
FSRef fsRef ; FSRef fsRef ;
@@ -2530,11 +2531,9 @@ bool wxFileName::MacFindDefaultTypeAndCreator( const wxString& ext , wxUint32 *t
void wxFileName::MacRegisterDefaultTypeAndCreator( const wxString& ext , wxUint32 type , wxUint32 creator ) void wxFileName::MacRegisterDefaultTypeAndCreator( const wxString& ext , wxUint32 type , wxUint32 creator )
{ {
MacEnsureDefaultExtensionsLoaded() ; MacEnsureDefaultExtensionsLoaded();
MacDefaultExtensionRecord rec ; MacDefaultExtensionRecord rec(ext.Lower(), type, creator);
rec.m_type = type ; gMacDefaultExtensions.Add( rec );
rec.m_creator = creator ;
wxStrncpy( rec.m_ext , ext.Lower().c_str() , kMacExtensionMaxLength ) ;
gMacDefaultExtensions.Add( rec ) ;
} }
#endif
#endif // defined( __WXOSX_MAC__ ) && wxOSX_USE_CARBON