PR libstdc++/29134 (vector<bool> bits)
2006-09-22 Paolo Carlini <pcarlini@suse.de> PR libstdc++/29134 (vector<bool> bits) * include/bits/stl_bvector.h (vector<bool>::max_size): Use allocator' max_size. * testsuite/23_containers/vector/bool/capacity/29134.cc: New. * testsuite/23_containers/deque/capacity/29134-2.cc: Minor tweak. * testsuite/23_containers/vector/capacity/29134-2.cc: Likewise. From-SVN: r117148
This commit is contained in:
parent
dcd400b56f
commit
3b83e64bd3
5 changed files with 55 additions and 5 deletions
|
@ -1,3 +1,13 @@
|
|||
2006-09-22 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR libstdc++/29134 (vector<bool> bits)
|
||||
* include/bits/stl_bvector.h (vector<bool>::max_size):
|
||||
Use allocator' max_size.
|
||||
* testsuite/23_containers/vector/bool/capacity/29134.cc: New.
|
||||
|
||||
* testsuite/23_containers/deque/capacity/29134-2.cc: Minor tweak.
|
||||
* testsuite/23_containers/vector/capacity/29134-2.cc: Likewise.
|
||||
|
||||
2006-09-22 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/tr1/type_traits (add_reference): Robustify vs
|
||||
|
|
|
@ -581,7 +581,11 @@ template<typename _Alloc>
|
|||
|
||||
size_type
|
||||
max_size() const
|
||||
{ return size_type(-1); }
|
||||
{
|
||||
const size_type __asize = _M_get_Bit_allocator().max_size();
|
||||
return (__asize <= size_type(-1) / int(_S_word_bit) ?
|
||||
__asize * int(_S_word_bit) : size_type(-1));
|
||||
}
|
||||
|
||||
size_type
|
||||
capacity() const
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
|
||||
#include <deque>
|
||||
#include <stdexcept>
|
||||
#include <limits>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
// libstdc++/29134
|
||||
|
@ -33,7 +32,7 @@ void test01()
|
|||
|
||||
try
|
||||
{
|
||||
d.resize(numeric_limits<size_t>::max());
|
||||
d.resize(size_t(-1));
|
||||
}
|
||||
catch(const std::length_error&)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
// Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
//
|
||||
// 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
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without Pred the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
// USA.
|
||||
|
||||
// 23.2.5 class vector<bool> [lib.vector.bool]
|
||||
|
||||
#include <vector>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
// libstdc++/29134
|
||||
void test01()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
|
||||
std::vector<bool> vb;
|
||||
|
||||
VERIFY( vb.max_size() == std::vector<bool>::size_type(-1) );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
|
@ -20,7 +20,6 @@
|
|||
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
#include <limits>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
// libstdc++/29134
|
||||
|
@ -33,7 +32,7 @@ void test01()
|
|||
|
||||
try
|
||||
{
|
||||
v.resize(numeric_limits<size_t>::max());
|
||||
v.resize(size_t(-1));
|
||||
}
|
||||
catch(const std::length_error&)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue