From 7dfe6f2a5112982c5acc75afdf5a41fea502ea8b Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 16 Jul 2007 18:52:53 +0000 Subject: [PATCH] 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 --- include/wx/wxcrt.h | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) 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) \ -- 2.50.0