This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]