aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2007-04-11 15:19:15 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2007-04-11 15:19:15 +0000
commit90737ab777cc13f3c3aaf8e9c352254df3ad6866 (patch)
tree990efb8ae32702ecec0ecea8294040b6d340f442
parent4bf371ea7e02b09ea657e8e6340b1b55ea210c6c (diff)
downloadgcc-90737ab777cc13f3c3aaf8e9c352254df3ad6866.zip
gcc-90737ab777cc13f3c3aaf8e9c352254df3ad6866.tar.gz
gcc-90737ab777cc13f3c3aaf8e9c352254df3ad6866.tar.bz2
locale_facets.tcc (num_get<>::do_get(iter_type, ios_base&, ios_base::iostate&, void*&)): Fix for sizeof(void*) > sizeof(unsigned long).
2007-04-11 Paolo Carlini <pcarlini@suse.de> * include/bits/locale_facets.tcc (num_get<>::do_get(iter_type, ios_base&, ios_base::iostate&, void*&)): Fix for sizeof(void*) > sizeof(unsigned long). * testsuite/22_locale/num_get/get/char/1.cc: Fix void* test. * testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise. * testsuite/22_locale/num_put/put/char/1.cc: Tweak comment. * testsuite/22_locale/num_put/put/wchar_t/1.cc: Likewise. From-SVN: r123716
-rw-r--r--libstdc++-v3/ChangeLog12
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc6
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc10
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc8
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc3
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc6
6 files changed, 30 insertions, 15 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 31564dd..aac7748 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+2007-04-11 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/locale_facets.tcc (num_get<>::do_get(iter_type,
+ ios_base&, ios_base::iostate&, void*&)): Fix for sizeof(void*)
+ > sizeof(unsigned long).
+
+ * testsuite/22_locale/num_get/get/char/1.cc: Fix void* test.
+ * testsuite/22_locale/num_get/get/wchar_t/1.cc: Likewise.
+
+ * testsuite/22_locale/num_put/put/char/1.cc: Tweak comment.
+ * testsuite/22_locale/num_put/put/wchar_t/1.cc: Likewise.
+
2007-04-11 Zack Weinberg <zack@mrtock.ucsd.edu>
* include/std/iosfwd: Do not include <bits/c++locale.h> and
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index fa3ce4e..64f1485 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -890,7 +890,11 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
const fmtflags __fmt = __io.flags();
__io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
- unsigned long __ul;
+ typedef __gnu_cxx::__conditional_type<(sizeof(void*)
+ <= sizeof(unsigned long)),
+ unsigned long, unsigned long long>::__type _UIntPtrType;
+
+ _UIntPtrType __ul;
__beg = _M_extract_int(__beg, __end, __io, __err, __ul);
// Reset from hex formatted input.
diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
index 8ff9852..266388f 100644
--- a/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
@@ -2,7 +2,8 @@
// 2001-11-21 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -51,8 +52,7 @@ void test01()
double d;
long double ld1 = 6.630025e+4;
long double ld;
- void* v;
- const void* cv = &ul2;
+ void* v = 0;
// cache the num_get facet
istringstream iss;
@@ -125,12 +125,12 @@ void test01()
VERIFY( ld == 0 );
VERIFY( err == goodbit );
- // const void
+ // void*
iss.str("0xbffff74c,");
iss.clear();
err = goodbit;
ng.get(iss.rdbuf(), 0, iss, err, v);
- VERIFY( &v != &cv );
+ VERIFY( v != 0 );
VERIFY( err == goodbit );
#ifdef _GLIBCXX_USE_LONG_LONG
diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
index 4e54397..43cfa93 100644
--- a/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
@@ -2,7 +2,8 @@
// 2001-11-21 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -52,7 +53,6 @@ void test01()
long double ld1 = 6.630025e+4;
long double ld;
void* v;
- const void* cv = &ul2;
// cache the num_get facet
wistringstream iss;
@@ -124,12 +124,12 @@ void test01()
VERIFY( ld == 0 );
VERIFY( err == goodbit );
- // const void
+ // void*
iss.str(L"0xbffff74c,");
iss.clear();
err = goodbit;
ng.get(iss.rdbuf(), 0, iss, err, v);
- VERIFY( &v != &cv );
+ VERIFY( v != 0 );
VERIFY( err == goodbit );
#ifdef _GLIBCXX_USE_LONG_LONG
diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
index 1ea3776..36c6307 100644
--- a/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
@@ -65,7 +65,6 @@ void test01()
iterator_type os_it01 = np.put(os_it00, oss, '+', b1);
result1 = oss.str();
VERIFY( result1 == "1" );
- // VERIFY( os_it00 != os_it01 );
oss.str(empty);
np.put(oss.rdbuf(), oss, '+', b0);
@@ -134,7 +133,7 @@ void test01()
result1 = oss.str();
VERIFY( result1 == "0" );
- // const void
+ // const void*
oss.str(empty);
oss.clear();
np.put(oss.rdbuf(), oss, '+', cv);
diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
index 9ff25d5..f588df3 100644
--- a/libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
@@ -2,7 +2,8 @@
// 2001-11-19 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+// Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -65,7 +66,6 @@ void test01()
iterator_type os_it01 = np.put(os_it00, oss, L'+', b1);
result1 = oss.str();
VERIFY( result1 == L"1" );
- // VERIFY( os_it00 != os_it01 );
oss.str(empty);
np.put(oss.rdbuf(), oss, L'+', b0);
@@ -134,7 +134,7 @@ void test01()
result1 = oss.str();
VERIFY( result1 == L"0" );
- // const void
+ // const void*
oss.str(empty);
oss.clear();
np.put(oss.rdbuf(), oss, L'+', cv);