c_locale_generic.cc: Check errno for ERANGE instead of non-zero to aid portability.
authorLoren J. Rittle <ljrittle@acm.org>
Thu, 31 Jan 2002 00:47:05 +0000 (00:47 +0000)
committerLoren J. Rittle <ljrittle@gcc.gnu.org>
Thu, 31 Jan 2002 00:47:05 +0000 (00:47 +0000)
* config/locale/c_locale_generic.cc: Check errno for ERANGE
instead of non-zero to aid portability.

From-SVN: r49350

libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/c_locale_generic.cc

index cb3f92bfaaf35f77e842165074fe24e836efd2b7..56bca718d7ba092ce3c8f58bc7bc3586f8cd4dd6 100644 (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.
index 4a8770e5fe5c7ba04ffb093735aa8228c3ac17e4..0d601aeb21455a95720ae2b021624d1391dfa691 100644 (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;