summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.eh/new2.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.eh/new2.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.eh/new2.C45
1 files changed, 0 insertions, 45 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.eh/new2.C b/gcc/testsuite/g++.old-deja/g++.eh/new2.C
deleted file mode 100644
index ddc8ba82e58..00000000000
--- a/gcc/testsuite/g++.old-deja/g++.eh/new2.C
+++ /dev/null
@@ -1,45 +0,0 @@
-// Test that a throw in B's constructor destroys the A and frees the memory.
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <new.h>
-
-struct A {
- A();
- ~A();
-};
-
-struct B {
- B (A);
-};
-
-void foo (B*);
-
-int newed, created;
-
-int main ()
-{
- newed = 0; // The libraries might call new before main starts.
- try {
- foo (new B (A ()));
- } catch (...) { }
-
- return !(!newed && !created);
-}
-
-A::A() { created = 1; }
-A::~A() { created = 0; }
-B::B(A) { throw 1; }
-void foo (B*) { }
-
-void* operator new (size_t size) throw (std::bad_alloc)
-{
- ++newed;
- return (void *) malloc (size);
-}
-
-void operator delete (void *p) throw ()
-{
- --newed;
- free (p);
-}