OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.old-deja/] [g++.eh/] [new1.C] - Blame information for rev 699

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 699 jeremybenn
// { dg-do run  }
2
// Test that a throw in foo destroys the A, but does not free the memory.
3
// Avoid use of none-overridable new/delete operators in shared
4
// { dg-options "-static" { target *-*-mingw* } }
5
 
6
#include 
7
#include 
8
#include 
9
 
10
struct A {
11
  A();
12
  ~A();
13
};
14
 
15
struct B {
16
  B (A);
17
};
18
 
19
void foo (B*);
20
 
21
int newed, created;
22
 
23
int main ()
24
{
25
  try {
26
    foo (new B (A ()));
27
  } catch (...) { }
28
 
29
  return !(newed && !created);
30
}
31
 
32
A::A() { created = 1; }
33
A::~A() { created = 0; }
34
B::B(A) { }
35
void foo (B*) { throw 1; }
36
 
37
void* operator new (size_t size)
38
#if __cplusplus <= 199711L
39
  throw (std::bad_alloc)
40
#endif
41
{
42
  ++newed;
43
  return (void *) std::malloc (size);
44
}
45
 
46
void operator delete (void *p) throw ()
47
{
48
  --newed;
49
  std::free (p);
50
}
51
 
52
 
53
 
54
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.