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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user