diff options
author | Loren J. Rittle <ljrittle@acm.org> | 2002-01-31 00:47:05 +0000 |
---|---|---|
committer | Loren J. Rittle <ljrittle@gcc.gnu.org> | 2002-01-31 00:47:05 +0000 |
commit | 2083b5be4d96aefccfb38fc972bf211570209e33 (patch) | |
tree | 3fd2a0f0e2cf46fcbf96eb4465b80b24ded2b860 | |
parent | c3a7de6ad83ba50db476c9c212b94f18cdcac3b2 (diff) | |
download | gcc-2083b5be4d96aefccfb38fc972bf211570209e33.zip gcc-2083b5be4d96aefccfb38fc972bf211570209e33.tar.gz gcc-2083b5be4d96aefccfb38fc972bf211570209e33.tar.bz2 |
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/c_locale_generic.cc | 14 |
2 files changed, 12 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index cb3f92b..56bca71 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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. diff --git a/libstdc++-v3/config/locale/c_locale_generic.cc b/libstdc++-v3/config/locale/c_locale_generic.cc index 4a8770e..0d601ae 100644 --- a/libstdc++-v3/config/locale/c_locale_generic.cc +++ b/libstdc++-v3/config/locale/c_locale_generic.cc @@ -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; |