diff --git a/include/wx/defs.h b/include/wx/defs.h index d5fc6c3c56..ef32c34068 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -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 */ /* ---------------------------------------------------------------------------- */ diff --git a/include/wx/mimetype.h b/include/wx/mimetype.h index b0f732f08f..515cf34521 100644 --- a/include/wx/mimetype.h +++ b/include/wx/mimetype.h @@ -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 diff --git a/src/common/filesys.cpp b/src/common/filesys.cpp index 94a229f49c..4b3bb49c59 100644 --- a/src/common/filesys.cpp +++ b/src/common/filesys.cpp @@ -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() };