Home | History | Annotate | Download | only in jni
      1 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
      2 // { dg-options "-fexceptions" }
      3 // prms-id: 9706
      4 
      5 #include <stdlib.h>
      6 
      7 int count, acount;
      8 
      9 void *operator new(size_t sz) { ++count; return malloc (sz); }
     10 void operator delete(void *p) throw() { --count; free (p); }
     11 
     12 class A {
     13 public:
     14   A() { ++acount; }
     15   A(const A&) { ++acount; }
     16   ~A() { --acount; }
     17 };
     18 
     19 int main() {
     20   int i;
     21 
     22   // The standard library may have called new and/or delete during
     23   // startup, so we have to reset the counter here.
     24   count = 0;
     25 
     26   for( i = 0; i < 10; i++ ) {
     27     try {
     28       throw A();
     29     }
     30     catch (A& a) {
     31     }
     32   }
     33   if (acount)
     34     return 1;
     35   if (count)
     36     return 2;
     37 }
     38