c_locale_generic.cc: Check errno for ERANGE instead of non-zero to aid portability.

* config/locale/c_locale_generic.cc: Check errno for ERANGE
	instead of non-zero to aid portability.

From-SVN: r49350
This commit is contained in:
Loren J. Rittle 2002-01-31 00:47:05 +00:00 committed by Loren J. Rittle
parent c3a7de6ad8
commit 2083b5be4d
2 changed files with 12 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2002-01-30 Loren Rittle <ljrittle@acm.org>
* config/locale/c_locale_generic.cc: Check errno for ERANGE
instead of non-zero to aid portability.
2002-01-30 Peter Schmid <schmid@snake.iap.physik.tu-darmstadt.de>
* docs/html/22_locale/messages.html: Fix example code.

View File

@ -48,7 +48,7 @@ namespace std
char* __sanity;
errno = 0;
long __l = strtol(__s, &__sanity, __base);
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __l;
else
__err |= ios_base::failbit;
@ -65,7 +65,7 @@ namespace std
char* __sanity;
errno = 0;
unsigned long __ul = strtoul(__s, &__sanity, __base);
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __ul;
else
__err |= ios_base::failbit;
@ -83,7 +83,7 @@ namespace std
char* __sanity;
errno = 0;
long long __ll = strtoll(__s, &__sanity, __base);
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __ll;
else
__err |= ios_base::failbit;
@ -100,7 +100,7 @@ namespace std
char* __sanity;
errno = 0;
unsigned long long __ull = strtoull(__s, &__sanity, __base);
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __ull;
else
__err |= ios_base::failbit;
@ -124,7 +124,7 @@ namespace std
#else
float __f = static_cast<float>(strtod(__s, &__sanity));
#endif
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __f;
else
__err |= ios_base::failbit;
@ -144,7 +144,7 @@ namespace std
char* __sanity;
errno = 0;
double __d = strtod(__s, &__sanity);
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __d;
else
__err |= ios_base::failbit;
@ -165,7 +165,7 @@ namespace std
char* __sanity;
errno = 0;
long double __ld = strtold(__s, &__sanity);
if (__sanity != __s && *__sanity == '\0' && errno == 0)
if (__sanity != __s && *__sanity == '\0' && errno != ERANGE)
__v = __ld;
#else
typedef char_traits<char>::int_type int_type;