FSF GCC merge 02/23/03
[official-gcc.git] / gcc / testsuite / g++.old-deja / g++.other / new7.C
blob35ec0bbac88c4d19701ce803fb9737a3a3f4b2b1
1 // Origin: philip_martin@ntlworld.com
3 #include <new>
5 extern "C" void abort();
7 bool new_flag = false;
8 bool delete_flag = false;
10 struct X {
11   X()
12   {
13     throw 1;
14   }
15   void* operator new ( std::size_t n ) throw ( std::bad_alloc )
16   {
17     new_flag = true;
18     return ::operator new( n );
19   }
20   void operator delete( void* p, std::size_t n ) throw()
21   {
22     delete_flag = true;
23     ::operator delete( p );
24   }
27 int
28 main()
30   try
31     {
32       X* x = new X; // gcc 3.0 fails to call operator delete when X::X throws
33     }
34   catch ( ... )
35     {
36     }
37   if ( ! new_flag || ! delete_flag )
38     ::abort();