From 122f3c5dc01fc03b05a29d009a24e170adf2e370 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= <abx@abx.art.pl> Date: Mon, 30 Oct 2006 18:40:50 +0000 Subject: [PATCH] Simplest fix received from OW community (Peter C. Chapin). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42743 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/string.cpp | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/src/common/string.cpp b/src/common/string.cpp index 1353eabfed..4551c66931 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1681,13 +1681,18 @@ int wxString::Find(const wxChar *pszSub) const // the implementation of all the functions below is exactly the same so factor // it out -#ifndef __WATCOMC__ + +#ifdef __WATCOMC__ + #define STR2INTLINK _WCRTLINK +#else + #define STR2INTLINK +#endif template <typename T> bool wxStringToIntType(const wxChar *start, T *val, int base, - T (*func)(const wxChar *, wxChar **, int)) + T STR2INTLINK (*func)(const wxChar *, wxChar **, int)) { wxCHECK_MSG( val, false, _T("NULL output pointer") ); wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); @@ -1708,40 +1713,20 @@ bool wxStringToIntType(const wxChar *start, ; } -#define wxSTR2INT(val, b, func) return wxStringToIntType(c_str(), val, b, func) - -#else // __WATCOMC__ - -// FIXME, TODO, ASAP !!! - ugly trick to make release for Open Watcom possible -// without changing code flow for other compilers - -#define wxSTR2INT(val, base, func) \ - wxCHECK_MSG( val, false, _T("NULL output pointer") ); \ - wxASSERT_MSG( !base || (base > 1 && base <= 36), _T("invalid base") ); \ - \ - errno = 0; \ - \ - wxChar *end; \ - *val = (*func)(c_str(), &end, base); \ - \ - return !*end && (end != c_str()) && (errno != ERANGE) - -#endif // !__WATCOMC__/__WATCOMC__ - bool wxString::ToLong(long *val, int base) const { - wxSTR2INT(val, base, wxStrtol); + return wxStringToIntType(c_str(), val, base, wxStrtol); } bool wxString::ToULong(unsigned long *val, int base) const { - wxSTR2INT(val, base, wxStrtoul); + return wxStringToIntType(c_str(), val, base, wxStrtoul); } bool wxString::ToLongLong(wxLongLong_t *val, int base) const { #ifdef wxHAS_STRTOLL - wxSTR2INT(val, base, wxStrtoll); + return wxStringToIntType(c_str(), val, base, wxStrtoll); #else // TODO: implement this ourselves wxUnusedVar(val); @@ -1753,7 +1738,7 @@ bool wxString::ToLongLong(wxLongLong_t *val, int base) const bool wxString::ToULongLong(wxULongLong_t *val, int base) const { #ifdef wxHAS_STRTOLL - wxSTR2INT(val, base, wxStrtoull); + return wxStringToIntType(c_str(), val, base, wxStrtoull); #else // TODO: implement this ourselves wxUnusedVar(val); -- 2.45.2