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
This commit is contained in:
Paolo Carlini 2007-04-11 15:19:15 +00:00 committed by Paolo Carlini
parent 4bf371ea7e
commit 90737ab777
6 changed files with 30 additions and 15 deletions

View File

@ -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

View File

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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);