aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2003-12-09 20:02:58 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2003-12-09 20:02:58 +0000
commit1f3adac20cbb63ef83ddca5548b67a97bfb2c8ee (patch)
tree52a810b91e113d635231cac5aa6c6b42e4793713 /libstdc++-v3
parent579ed98749118b73243dea6f54916c6f2207e963 (diff)
downloadgcc-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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc16
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;