added wxNullPtr and use it instead of just 0 with wxFileTypeInfo vararg ctor to fix crashes under 64 bit architectures

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2007-06-13 11:32:44 +00:00
parent e9c7391947
commit 7c37eb10fd
3 changed files with 20 additions and 7 deletions

View File

@ -1141,6 +1141,18 @@ typedef float wxFloat32;
# endif
#endif /* wxUSE_WCHAR_T */
/*
This constant should be used instead of NULL in vararg functions taking
wxChar* arguments: passing NULL (which is the same as 0, unless the compiler
defines it specially, e.g. like gcc does with its __null built-in) doesn't
work in this case as va_arg() wouldn't interpret the integer 0 correctly
when trying to convert it to a pointer on architectures where sizeof(int) is
strictly less than sizeof(void *).
Examples of places where this must be used include wxFileTypeInfo ctor.
*/
#define wxNullPtr ((void *)NULL)
/* ---------------------------------------------------------------------------- */
/* byte ordering related definition and macros */
/* ---------------------------------------------------------------------------- */

View File

@ -151,8 +151,9 @@ public:
// const wxString& openCmd,
// const wxString& printCmd,
// const wxString& desc,
// // the other parameters form a NULL terminated list of
// // extensions
// // the other parameters form a list of extensions for this
// // file type and should be terminated with wxNullPtr (not
// // just NULL!)
// ...);
WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
// NB: these are not format strings, using

View File

@ -69,27 +69,27 @@ wxString wxFileSystemHandler::GetMimeTypeFromExt(const wxString& location)
wxEmptyString,
wxEmptyString,
_T("JPEG image (from fallback)"),
_T("jpg"), _T("jpeg"), _T("JPG"), _T("JPEG"), 0),
_T("jpg"), _T("jpeg"), _T("JPG"), _T("JPEG"), wxNullPtr),
wxFileTypeInfo(_T("image/gif"),
wxEmptyString,
wxEmptyString,
_T("GIF image (from fallback)"),
_T("gif"), _T("GIF"), 0),
_T("gif"), _T("GIF"), wxNullPtr),
wxFileTypeInfo(_T("image/png"),
wxEmptyString,
wxEmptyString,
_T("PNG image (from fallback)"),
_T("png"), _T("PNG"), 0),
_T("png"), _T("PNG"), wxNullPtr),
wxFileTypeInfo(_T("image/bmp"),
wxEmptyString,
wxEmptyString,
_T("windows bitmap image (from fallback)"),
_T("bmp"), _T("BMP"), 0),
_T("bmp"), _T("BMP"), wxNullPtr),
wxFileTypeInfo(_T("text/html"),
wxEmptyString,
wxEmptyString,
_T("HTML document (from fallback)"),
_T("htm"), _T("html"), _T("HTM"), _T("HTML"), 0),
_T("htm"), _T("html"), _T("HTM"), _T("HTML"), wxNullPtr),
// must terminate the table with this!
wxFileTypeInfo()
};