diff options
author | François Dumont <fdumont@gcc.gnu.org> | 2014-10-05 18:44:46 +0000 |
---|---|---|
committer | François Dumont <fdumont@gcc.gnu.org> | 2014-10-05 18:44:46 +0000 |
commit | e6fb44d8789be4734b6d9141ec26dfc57701523e (patch) | |
tree | 19e0bfce6a8d6d907725b604c746450b22c995ac | |
parent | 29c43c83ef425cbfd173df483b03b596ddf36570 (diff) | |
download | gcc-e6fb44d8789be4734b6d9141ec26dfc57701523e.zip gcc-e6fb44d8789be4734b6d9141ec26dfc57701523e.tar.gz gcc-e6fb44d8789be4734b6d9141ec26dfc57701523e.tar.bz2 |
re PR libstdc++/63456 (unordered_map incorrectly frees _M_single_bucket. Patch Included)
2014-10-05 François Dumont <fdumont@gcc.gnu.org>
PR libstdc++/63456
* include/bits/hashtable.h (_M_uses_single_bucket(__bucket_type*)): Test
the parameter.
* testsuite/23_containers/unordered_set/63456.cc: New.
From-SVN: r215905
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/hashtable.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc | 34 |
3 files changed, 42 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 21b1e1a..1cc81da 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2014-10-05 François Dumont <fdumont@gcc.gnu.org> + + PR libstdc++/63456 + * include/bits/hashtable.h (_M_uses_single_bucket(__bucket_type*)): Test + the parameter. + * testsuite/23_containers/unordered_set/63456.cc: New. + 2014-10-03 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/63449 diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h index 0eb58cf..f35e7ea 100644 --- a/libstdc++-v3/include/bits/hashtable.h +++ b/libstdc++-v3/include/bits/hashtable.h @@ -326,7 +326,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool _M_uses_single_bucket(__bucket_type* __bkts) const - { return __builtin_expect(_M_buckets == &_M_single_bucket, false); } + { return __builtin_expect(__bkts == &_M_single_bucket, false); } bool _M_uses_single_bucket() const diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc new file mode 100644 index 0000000..eba363c --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc @@ -0,0 +1,34 @@ +// Copyright (C) 2014 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 3, 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 COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } + +#include <unordered_set> + +void test01() +{ + std::unordered_set<int> s1, s2; + s2.insert(2); + + s1 = s2; +} + +int main() +{ + test01(); + return 0; +} |