OSDN Git Service

2003-12-09 Paolo Carlini <pcarlini@suse.de>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Dec 2003 20:02:58 +0000 (20:02 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Dec 2003 20:02:58 +0000 (20:02 +0000)
* include/bits/locale_facets.tcc (num_get::_M_extract_int):
Slightly streamline the code dealing with overflows and the
parsing of the sign.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74476 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/locale_facets.tcc

index ba57e35..04c3b1a 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-09  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/bits/locale_facets.tcc (num_get::_M_extract_int):
+       Slightly streamline the code dealing with overflows and the
+       parsing of the sign.
+
 2003-12-09  Bernardo Innocenti  <bernie@develer.com>
 
        * include/ext/algorithm, include/ext/debug_allocator.h,
index efd7fd3..ae0a4e4 100644 (file)
@@ -283,9 +283,9 @@ namespace std
        bool __negative = false;
        if (__beg != __end)
          {
-           __negative = __traits_type::eq(*__beg, __lit[_S_iminus]);
-           if (__negative && numeric_limits<_ValueT>::is_signed
-               || __traits_type::eq(*__beg, __lit[_S_iplus]))
+           if (numeric_limits<_ValueT>::is_signed)
+             __negative = __traits_type::eq(*__beg, __lit[_S_iminus]);
+           if (__negative || __traits_type::eq(*__beg, __lit[_S_iplus]))
              ++__beg;
          }
 
@@ -353,8 +353,7 @@ namespace std
                    else
                      {
                        const _ValueT __new_result = __result * __base - __digit;
-                       if (__result)
-                         __overflow |= __new_result >= __result;
+                       __overflow |= __new_result > __result;
                        __result = __new_result;
                        ++__sep_pos;
                        __found_num = true;
@@ -398,8 +397,7 @@ namespace std
                    else
                      {
                        const _ValueT __new_result = __result * __base + __digit;
-                       if (__result)
-                         __overflow |= __new_result <= __result;
+                       __overflow |= __new_result < __result;
                        __result = __new_result;
                        ++__sep_pos;
                        __found_num = true;
@@ -436,8 +434,8 @@ namespace std
              __err |= ios_base::failbit;
          }
 
-       if (!(__err & ios_base::failbit)
-           && !__overflow && __found_num)
+       if (!(__err & ios_base::failbit) && !__overflow
+           && __found_num)
          __v = __result;
        else
          __err |= ios_base::failbit;