#include <new>
#import "test_support.h"
static void* myLastNewAllocation;
static void* myLastDelete;
void* operator new(size_t s) throw (std::bad_alloc)
{
myLastNewAllocation = malloc(s);
return myLastNewAllocation;
}
struct Foo {
int bytes[10];
};
__attribute__((weak))
void operator delete(void* p) throw()
{
myLastDelete = p;
::free(p);
}
int main(int argc, const char* argv[], const char* envp[], const char* apple[]) {
myLastNewAllocation = NULL;
char* stuff = new char[24];
if ( (void*)stuff != myLastNewAllocation ) {
FAIL("system array allocator not redirected through my operator new");
}
myLastNewAllocation = NULL;
Foo* foo = new Foo();
if ( (void*)foo != myLastNewAllocation ) {
FAIL("allocation not redirected though my operator new");
}
delete foo;
if ( (void*)foo != myLastDelete ) {
FAIL("deallocation not redirected though my operator delete");
}
PASS("Success");
}