diff options
author | Paolo Carlini <pcarlini@suse.de> | 2003-12-09 20:02:58 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2003-12-09 20:02:58 +0000 |
commit | 1f3adac20cbb63ef83ddca5548b67a97bfb2c8ee (patch) | |
tree | 52a810b91e113d635231cac5aa6c6b42e4793713 | |
parent | 579ed98749118b73243dea6f54916c6f2207e963 (diff) | |
download | gcc-1f3adac20cbb63ef83ddca5548b67a97bfb2c8ee.zip gcc-1f3adac20cbb63ef83ddca5548b67a97bfb2c8ee.tar.gz gcc-1f3adac20cbb63ef83ddca5548b67a97bfb2c8ee.tar.bz2 |
locale_facets.tcc (num_get::_M_extract_int): Slightly streamline the code dealing with overflows and the parsing of the sign.
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.
From-SVN: r74476
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ba57e35..04c3b1a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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, diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index efd7fd3..ae0a4e4 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -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; |