2009-07-17 Richard Guenther <rguenther@suse.de>
[official-gcc.git] / libstdc++-v3 / testsuite / 21_strings / basic_string / pthread18185.cc
blob12f80c443dc3c2ce383e97cb8a70aaef1a1ba0a8
1 //
2 // Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
3 //
4 // This file is part of the GNU ISO C++ Library. This library is free
5 // software; you can redistribute it and/or modify it under the
6 // terms of the GNU General Public License as published by the
7 // Free Software Foundation; either version 3, or (at your option)
8 // any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License along
16 // with this library; see the file COPYING3. If not see
17 // <http://www.gnu.org/licenses/>.
19 // { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* mips-sgi-irix6* } }
20 // { dg-options "-pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* } }
21 // { dg-options "-pthreads" { target *-*-solaris* } }
23 #include <ext/new_allocator.h>
24 #include <string>
25 #include <pthread.h>
27 static void*
28 foo (void*)
30 typedef std::char_traits<char> traits_type;
31 typedef __gnu_cxx::new_allocator<char> allocator_type;
32 typedef std::basic_string<char, traits_type, allocator_type> string_type;
33 try
35 throw string_type("leak");
37 catch (const string_type&)
39 pthread_exit (0);
43 // c++/18185
44 // This used to leak memory.
45 int
46 main ()
48 pthread_t t;
49 pthread_create (&t, 0, foo, 0);
50 pthread_join (t, 0);
51 return 0;