OSDN Git Service

PR debug/43942
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / eh / new1.C
1 // PR c++/5757
2 // Test that when a constructor throws in a new-expression, we pass the
3 // right pointer to operator delete.
4
5 // { dg-do run }
6
7 #include <new>
8
9 int ret = 1;
10
11 void *ptr;
12 void * operator new[] (size_t s) throw (std::bad_alloc)
13 {
14   ptr = operator new (s);
15   return ptr;
16 }
17
18 void operator delete[] (void *p) throw ()
19 {
20   if (p == ptr)
21     ret = 0;
22   operator delete (p);
23 }
24
25 struct A
26 {
27   A() { throw 1; }
28   ~A() {}
29 };
30
31 int
32 main ()
33 {
34   try
35     {
36       A *p = new A[4];
37     }
38   catch (...) {}
39   return ret;
40 }