OSDN Git Service

* config/locale/c_locale_generic.cc: Check errno for ERANGE
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / config / locale / c_locale_generic.cc
index 7133cd3..0d601ae 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,13 +165,13 @@ 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 typename char_traits<_CharT>::int_type int_type;
+         typedef char_traits<char>::int_type int_type;
          long double __ld;
          int __p = sscanf(__s, "%Lf", &__ld);
-         if (__p && static_cast<int_type>(__p) != char_traits<_CharT>::eof())
+         if (__p && static_cast<int_type>(__p) != char_traits<char>::eof())
            __v = __ld;
 #endif
          else