+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,
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;
}
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;
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;
__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;