This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] Add back couple of includes for generic; clean up
- From: Paolo Carlini <pcarlini at unitus dot it>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 29 Oct 2003 14:39:10 +0100
- Subject: [v3] Add back couple of includes for generic; clean up
Hi,
Gerald Pfeifer reported privately troubles with freebsd. Also, a nice
clean up to _M_extract_float that I didn't consider before.
Tested x86-linux, both gnu /and/ generic locale models.
Paolo.
///////////
2003-10-29 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/c_locale.cc: Add back <cmath>
and <cstdlib>.
* include/bits/locale_facets.tcc
(num_get::_M_extract_float): Clean up.
diff -urN libstdc++-v3-orig/config/locale/generic/c_locale.cc libstdc++-v3/config/locale/generic/c_locale.cc
--- libstdc++-v3-orig/config/locale/generic/c_locale.cc 2003-10-29 10:39:26.000000000 +0100
+++ libstdc++-v3/config/locale/generic/c_locale.cc 2003-10-29 14:08:29.000000000 +0100
@@ -34,6 +34,8 @@
// Written by Benjamin Kosnik <bkoz@redhat.com>
#include <cerrno> // For errno
+#include <cmath> // For isinf, finite, finitef, fabs
+#include <cstdlib> // For strof, strtold
#include <locale>
#ifdef _GLIBCXX_HAVE_IEEEFP_H
diff -urN libstdc++-v3-orig/include/bits/locale_facets.tcc libstdc++-v3/include/bits/locale_facets.tcc
--- libstdc++-v3-orig/include/bits/locale_facets.tcc 2003-10-29 12:59:18.000000000 +0100
+++ libstdc++-v3/include/bits/locale_facets.tcc 2003-10-29 13:48:18.000000000 +0100
@@ -169,7 +169,7 @@
string __found_grouping;
int __sep_pos = 0;
bool __e;
- while (__beg != __end)
+ for (; __beg != __end; ++__beg)
{
// Only look in digits.
const char_type __c = *__beg;
@@ -182,7 +182,6 @@
__xtrc += _S_atoms_in[__p - __lit];
__found_mantissa = true;
++__sep_pos;
- ++__beg;
}
else if (__traits_type::eq(__c, __lc->_M_thousands_sep)
&& __lc->_M_use_grouping && !__found_dec)
@@ -193,7 +192,6 @@
{
__found_grouping += static_cast<char>(__sep_pos);
__sep_pos = 0;
- ++__beg;
}
else
{
@@ -211,7 +209,6 @@
__found_grouping += static_cast<char>(__sep_pos);
__xtrc += '.';
__found_dec = true;
- ++__beg;
}
else if ((__e = __traits_type::eq(__c, __lit[_S_ie])
|| __traits_type::eq(__c, __lit[_S_iE]))
@@ -225,13 +222,12 @@
{
const bool __plus = __traits_type::eq(*__beg, __lit[_S_iplus]);
if (__plus || __traits_type::eq(*__beg, __lit[_S_iminus]))
- {
- __xtrc += __plus ? _S_atoms_in[_S_iplus]
- : _S_atoms_in[_S_iminus];
- ++__beg;
- }
+ __xtrc += __plus ? _S_atoms_in[_S_iplus]
+ : _S_atoms_in[_S_iminus];
+ __found_sci = true;
}
- __found_sci = true;
+ else
+ break;
}
else
// Not a valid input item.