aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoren J. Rittle <ljrittle@acm.org>2002-01-31 00:47:05 +0000
committerLoren J. Rittle <ljrittle@gcc.gnu.org>2002-01-31 00:47:05 +0000
commit2083b5be4d96aefccfb38fc972bf211570209e33 (patch)
tree3fd2a0f0e2cf46fcbf96eb4465b80b24ded2b860
parentc3a7de6ad83ba50db476c9c212b94f18cdcac3b2 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libstdc++-v3/config/locale/c_locale_generic.cc14
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;