diff options
author | Roberto Bagnara <bagnara@cs.unipr.it> | 2008-05-10 17:02:34 +0200 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2008-05-10 15:02:34 +0000 |
commit | 36d6d97993554c36ba31e1d1f6193b96d581ed18 (patch) | |
tree | 6b2565c4565bb94b11c441523d4c7c9c2b7b7a26 | |
parent | b282a8d3ecd34ff57710098f40159029cbd5ec3e (diff) | |
download | gcc-36d6d97993554c36ba31e1d1f6193b96d581ed18.zip gcc-36d6d97993554c36ba31e1d1f6193b96d581ed18.tar.gz gcc-36d6d97993554c36ba31e1d1f6193b96d581ed18.tar.bz2 |
vector (vector<>::_M_requires_reallocation): Fix macro.
2008-05-10 Roberto Bagnara <bagnara@cs.unipr.it>
Paolo Carlini <paolo.carlini@oracle.com>
* include/debug/vector (vector<>::_M_requires_reallocation): Fix macro.
* testsuite/23_containers/vector/debug_mode_requires_reallocation.cc:
New.
Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
From-SVN: r135151
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/vector | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation.cc | 51 |
3 files changed, 60 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6bc43b8..b64bb7e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2008-05-10 Roberto Bagnara <bagnara@cs.unipr.it> + Paolo Carlini <paolo.carlini@oracle.com> + + * include/debug/vector (vector<>::_M_requires_reallocation): Fix macro. + * testsuite/23_containers/vector/debug_mode_requires_reallocation.cc: + New. + 2008-05-07 Johannes Singler <singler@ira.uka.de> * include/parallel/quicksort.h: diff --git a/libstdc++-v3/include/debug/vector b/libstdc++-v3/include/debug/vector index 672cb81..a588ca8 100644 --- a/libstdc++-v3/include/debug/vector +++ b/libstdc++-v3/include/debug/vector @@ -1,6 +1,6 @@ // Debugging vector implementation -*- C++ -*- -// Copyright (C) 2003, 2004, 2005, 2006, 2007 +// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -443,7 +443,7 @@ namespace __debug bool _M_requires_reallocation(size_type __elements) { -#ifdef _GLIBCXX_DEBUG_PEDANTIC +#ifndef _GLIBCXX_DEBUG_PEDANTIC return __elements > this->capacity(); #else return __elements > _M_guaranteed_capacity; diff --git a/libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation.cc b/libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation.cc new file mode 100644 index 0000000..079a70f --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation.cc @@ -0,0 +1,51 @@ +// Copyright (C) 2008 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 even 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. + +// { dg-options "-D_GLIBCXX_DEBUG" } + +#include <vector> +#include <algorithm> +#include <iterator> + +// http://gcc.gnu.org/ml/libstdc++/2008-05/msg00039.html +void test01() +{ + typedef std::vector<unsigned> array_t; + typedef std::back_insert_iterator<array_t> bii_t; + + array_t a; + + // Push 5 elements. + a.push_back(0); + a.push_back(1); + a.push_back(2); + a.push_back(3); + a.push_back(4); + // Ensure that there is enough space for other two elements. + // (2 + 5 = 7) + if (a.capacity() < 7) + a.reserve(7); + // Add two new elements. + std::copy(a.begin(), a.begin() + 2, bii_t(a)); +} + +int main() +{ + test01(); + return 0; +} |