diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.eh/new1.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.eh/new1.C | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.eh/new1.C b/gcc/testsuite/g++.old-deja/g++.eh/new1.C deleted file mode 100644 index 1671dbbe7de..00000000000 --- a/gcc/testsuite/g++.old-deja/g++.eh/new1.C +++ /dev/null @@ -1,44 +0,0 @@ -// Test that a throw in foo destroys the A, but does not free 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 () -{ - try { - foo (new B (A ())); - } catch (...) { } - - return !(newed && !created); -} - -A::A() { created = 1; } -A::~A() { created = 0; } -B::B(A) { } -void foo (B*) { throw 1; } - -void* operator new (size_t size) throw (std::bad_alloc) -{ - ++newed; - return (void *) malloc (size); -} - -void operator delete (void *p) throw () -{ - --newed; - free (p); -} |