From: Václav Slavík Date: Mon, 16 Jul 2007 18:52:53 +0000 (+0000) Subject: compilation fix for wxStrtod and friends: non-zero int can't be passed as pointer X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7dfe6f2a5112982c5acc75afdf5a41fea502ea8b compilation fix for wxStrtod and friends: non-zero int can't be passed as pointer git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/wxcrt.h b/include/wx/wxcrt.h index 99c01b94ea..f64ca4c51f 100644 --- a/include/wx/wxcrt.h +++ b/include/wx/wxcrt.h @@ -771,11 +771,24 @@ inline double wxStrtod(const wxCharTypeBuffer& nptr, T **endptr) // to be ever used, but it still has to compile). template struct wxStrtoxCharType {}; template<> struct wxStrtoxCharType - { typedef const char* Type; }; +{ + typedef const char* Type; + static char** AsPointer(char **p) { return p; } +}; template<> struct wxStrtoxCharType - { typedef const wchar_t* Type; }; +{ + typedef const wchar_t* Type; + static wchar_t** AsPointer(wchar_t **p) { return p; } +}; template<> struct wxStrtoxCharType - { typedef const char* Type; /* this one is never used */ }; +{ + typedef const char* Type; /* this one is never used */ + static char** AsPointer(int WXUNUSED_UNLESS_DEBUG(p)) + { + wxASSERT_MSG( p == 0, "passing non-NULL int is invalid" ); + return NULL; + } +}; template inline double wxStrtod(const wxString& nptr, T endptr) @@ -792,7 +805,8 @@ inline double wxStrtod(const wxString& nptr, T endptr) // note that it is important to use c_str() here and not mb_str() or // wc_str(), because we store the pointer into (possibly converted) // buffer in endptr and so it must be valid even when wxStrtod() returns - return wxStrtod((typename wxStrtoxCharType::Type)nptr.c_str(), endptr); + return wxStrtod((typename wxStrtoxCharType::Type)nptr.c_str(), + wxStrtoxCharType::AsPointer(endptr)); } } template @@ -816,7 +830,8 @@ inline double wxStrtod(const wxCStrData& nptr, T endptr) return name(nptr.wx_str(), (wxStringCharType**)NULL, base); \ else \ return name((typename wxStrtoxCharType::Type)nptr.c_str(), \ - endptr, base); \ + wxStrtoxCharType::AsPointer(endptr), \ + base); \ } \ template \ inline rettype name(const wxCStrData& nptr, T endptr, int base) \