1 // { dg-do run } 2 // Copyright (C) 1999 Free Software Foundation 3 4 // by Alexandre Oliva <oliva (at) lsd.ic.unicamp.br> 5 6 // Test whether dtors of vbases are called on throw within new[]. 7 // Variant of delete2.C. 8 9 extern "C" void abort(); 10 extern "C" void exit(int); 11 12 struct Foo { 13 static bool first; 14 15 Foo() { 16 if (first) 17 first = false; 18 else 19 throw first; 20 } 21 22 ~Foo() { 23 exit(0); 24 } 25 }; 26 27 bool Foo::first = true; 28 29 struct Bar : virtual Foo { 30 }; 31 32 int main() { 33 try { 34 delete [] new Bar[2]; 35 } catch (...) { 36 } 37 abort(); 38 } 39