#include <stdio.h>
#include <stdlib.h>
extern void foo();
static bool calledMainNew = false;
static bool calledMainDelete = false;
static bool enableTracking = false;
void* operator new(size_t size)
{
if (enableTracking)
calledMainNew = true;
void* ptr = malloc(size);
return ptr;
}
void operator delete(void* ptr)
{
if (enableTracking)
calledMainDelete = true;
free(ptr);
}
int main()
{
printf("[BEGIN] weak-coalesce-inserted-dylibs\n");
enableTracking = true;
int* v = new int(1);
if (!calledMainNew) {
printf("[FAIL] weak-coalesce-inserted-dylibs, didn't call executable operator new\n");
return 1;
}
delete v;
if (!calledMainDelete) {
printf("[FAIL] weak-coalesce-inserted-dylibs, didn't call executable operator delete\n");
return 1;
}
calledMainNew = false;
calledMainDelete = false;
foo();
if (calledMainNew) {
printf("[FAIL] weak-coalesce-inserted-dylibs, didn't call bar operator new\n");
return 1;
}
if (calledMainDelete) {
printf("[FAIL] weak-coalesce-inserted-dylibs, didn't call bar operator delete\n");
return 1;
}
printf("[PASS] weak-coalesce-inserted-dylibs\n");
return 0;
}