// { dg-do run } | |
// Copyright (C) 1999 Free Software Foundation | |
// by Alexandre Oliva <oliva@lsd.ic.unicamp.br> | |
// Test whether dtors of vbases are called on throw within new[]. | |
// Variant of delete2.C. | |
extern "C" void abort(); | |
extern "C" void exit(int); | |
struct Foo { | |
static bool first; | |
Foo() { | |
if (first) | |
first = false; | |
else | |
throw first; | |
} | |
~Foo() { | |
exit(0); | |
} | |
}; | |
bool Foo::first = true; | |
struct Bar : virtual Foo { | |
}; | |
int main() { | |
try { | |
delete [] new Bar[2]; | |
} catch (...) { | |
} | |
abort(); | |
} |