
static int destructed;
static int destructed2;

class Test {
public:
	Test() { printf("Test::Test()\n"); }
	~Test() { printf("Test::~Test()\n"); destructed = 1; }
};

void
cleanup_handler(void *arg __unused)
{
	destructed2 = 1;
	printf("%s()\n", __func__);
}

void
check_destruct(void)
{
	if (!destructed)
		printf("Bug, object destructor is not called\n");
	else
		printf("OK\n");
}

void
check_destruct2(void)
{
	if (!destructed)
		printf("Bug, object destructor is not called\n");
	else if (!destructed2)
		printf("Bug, cleanup handler is not called\n");
	else
		printf("OK\n");
}
