1 // GROUPS passed scoping
2 // scoping file
3 // From: svkakkad@cs.utexas.edu (Sheetal V. Kakkad)
4 // Date:     Tue, 5 Oct 93 12:38:49 -0500
5 // Subject:  G++ 2.4.5 - global delete operator not called when using "::delete"
6 // Message-ID: <9310051738.AA14586@boogie.cs.utexas.edu>
7 
8 #include <stdio.h>
9 #include <stddef.h>
10 #include <stdlib.h>
11 
12 class foo
13 {
14  public:
foo()15   foo () { ; }
~foo()16   ~foo () { ; }
17   void *operator new (size_t);
18   void operator delete (void *);
19 };
20 
new(size_t size)21 void *foo::operator new (size_t size)
22 {
23   return malloc (size);
24 }
25 
26 int overloaded_delete = 0;
27 
delete(void * data)28 void foo::operator delete (void *data)
29 {
30   free ((char *) data);
31   overloaded_delete++;
32 }
33 
main()34 int main ()
35 {
36   foo *f = new foo;
37   foo *ff = ::new foo;
38   ::delete ff;		// should call the default delete operator
39   delete f;
40   if (overloaded_delete == 1)
41     printf ("PASS\n");
42   else
43     { printf ("FAIL\n"); return 1; }
44 }
45