+++ /dev/null
-// check cleanup of partial array objects
-extern "C" void abort (void);
-extern "C" void exit (int);
-
-int ctor = 0;
-int dtor = 0;
-
-int cnt = 1;
-
-struct A {
- int x;
- A();
- A(const A&);
- ~A();
-};
-
-A::A()
-{
- if (cnt == 10)
- throw 57;
- x = cnt++;
- ctor++;
-}
-
-A::A(const A&)
-{
- if (cnt == 10)
- throw 57;
- x = cnt++;
- ctor++;
-}
-
-A::~A()
-{
- if (x + 1 != cnt--)
- abort();
- dtor++;
-}
-
-void f()
-{
- A a[] = {A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A(), A()};
-
- throw -1066;
-}
-
-int
-main()
-{
- int flag;
-
- flag = 0;
- try {
- f();
- }
- catch (int) {
- flag = 1;
- }
- if (!flag)
- abort();
- if (ctor != 9)
- abort();
- if (dtor != 9)
- abort();
-
- exit(0);
-}