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