diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 59702aad470454ea6464590eb9c01bbe65b76463..6df16eacad38dbb3deed59c67ebbdbc3937145aa 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-13  Paolo Carlini  <pcarlini@suse.de>
+
+	* include/bits/locale_facets.tcc (num_get::do_get(void*&)):
+	Set correctly just basefield, the only group that matters.
+
 2004-01-13  Paolo Carlini  <pcarlini@suse.de>
 
 	* include/ext/rope (_Rope_rep_alloc_base): Eliminate.
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 879b9e3a8eb5adbe6d013e524f9f3a970de28382..d781503c3cf9a93ce3012e3f9d1c7091dea59191 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -655,9 +655,7 @@ namespace std
       // Prepare for hex formatted input.
       typedef ios_base::fmtflags        fmtflags;
       const fmtflags __fmt = __io.flags();
-      const fmtflags __fmtmask = ~(ios_base::showpos | ios_base::basefield
-				   | ios_base::uppercase | ios_base::internal);
-      __io.flags(__fmt & __fmtmask | (ios_base::hex | ios_base::showbase));
+      __io.flags(__fmt & ~ios_base::basefield | ios_base::hex);
 
       unsigned long __ul;
       __beg = _M_extract_int(__beg, __end, __io, __err, __ul);