This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Fix libstdc++/36962


Paolo Carlini wrote:
Yes, this one "works", in the sense that if I apply my patchlet the first assert fails at run-time.

Thanks a lot, I will add it to the testsuite!
This is what I applied to mainline.

Paolo.

////////////////
2008-09-05  Peter Dimov  <pdimov@mmltd.net>

	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: New.

2008-09-05  Paolo Carlini  <paolo.carlini@oracle.com>

	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc: Rename
	to...
	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc: ...
	this.
Index: testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc
===================================================================
*** testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc	(revision 140034)
--- testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref.cc	(working copy)
***************
*** 1,61 ****
- // { dg-options "-std=gnu++0x" }
- 
- // Copyright (C) 2008 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
- // 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.
- 
- // 20.7.12.2 Template class shared_ptr [util.smartptr.shared]
- 
- #include <memory>
- #include <testsuite_hooks.h>
- 
- struct A { };
- 
- struct D {
-     typedef void result_type;
-     void operator()(A* p) { delete p;  ++count; }
-     int count;
- };
- 
- 
- // 20.7.12.2.1 shared_ptr constructors [util.smartptr.shared.const]
- 
- // Construction from unique_ptr
- int
- test01()
- {
-   bool test __attribute__((unused)) = true;
- 
-   D d = D();
-   std::unique_ptr<A, D&> up(new A, d);
-   {
-       std::shared_ptr<A> sp(std::move(up));
-       VERIFY( up.get() == 0 );
-       VERIFY( sp.get() != 0 );
-       VERIFY( sp.use_count() == 1 );
-   }
-   VERIFY( d.count == 1 );
- 
-   return 0;
- }
- 
- int
- main()
- {
-   test01();
-   return 0;
- }
--- 0 ----

Property changes on: testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
___________________________________________________________________
Added: svn:mergeinfo

Index: testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
===================================================================
*** testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc	(revision 0)
--- testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc	(revision 0)
***************
*** 0 ****
--- 1,64 ----
+ // { dg-options "-std=gnu++0x" }
+ 
+ // Copyright (C) 2008 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
+ // 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.
+ 
+ // 20.7.12.2 Template class shared_ptr [util.smartptr.shared]
+ 
+ #include <memory>
+ #include <functional>
+ #include <testsuite_hooks.h>
+ 
+ struct A { };
+ 
+ struct D {
+     typedef void result_type;
+     void operator()(A* p) { delete p;  ++count; }
+     int count;
+ };
+ 
+ 
+ // 20.7.12.2.1 shared_ptr constructors [util.smartptr.shared.const]
+ 
+ // Construction from unique_ptr
+ // See: http://gcc.gnu.org/ml/libstdc++/2008-09/msg00070.html.
+ int
+ test01()
+ {
+   bool test __attribute__((unused)) = true;
+ 
+   D d;
+   std::unique_ptr<A, D&> p1(new A, d);
+ 
+   std::shared_ptr<A> p2(std::move(p1));
+ 
+   typedef std::reference_wrapper<D> D2;
+   D2* p3 = std::get_deleter<D2>(p2);
+ 
+   VERIFY( p3 != 0 );
+   VERIFY( &p3->get() == &d );
+ 
+   return 0;
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   return 0;
+ }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]