1213155Sdavidxu/* $FreeBSD: releng/10.3/tools/regression/pthread/unwind/Test.cpp 213155 2010-09-25 04:26:40Z davidxu $ */
2213155Sdavidxu
3213155Sdavidxuint destructed;
4213155Sdavidxuint destructed2;
5213155Sdavidxu
6213155Sdavidxuclass Test {
7213155Sdavidxupublic:
8213155Sdavidxu	Test() { printf("Test::Test()\n"); }
9213155Sdavidxu	~Test() { printf("Test::~Test()\n"); destructed = 1; }
10213155Sdavidxu};
11213155Sdavidxu
12213155Sdavidxuvoid
13213155Sdavidxucleanup_handler(void *arg)
14213155Sdavidxu{
15213155Sdavidxu	destructed2 = 1;
16213155Sdavidxu	printf("%s()\n", __func__);
17213155Sdavidxu}
18213155Sdavidxu
19213155Sdavidxuvoid
20213155Sdavidxucheck_destruct(void)
21213155Sdavidxu{
22213155Sdavidxu	if (!destructed)
23213155Sdavidxu		printf("Bug, object destructor is not called\n");
24213155Sdavidxu	else
25213155Sdavidxu		printf("OK\n");
26213155Sdavidxu}
27213155Sdavidxu
28213155Sdavidxuvoid
29213155Sdavidxucheck_destruct2(void)
30213155Sdavidxu{
31213155Sdavidxu	if (!destructed)
32213155Sdavidxu		printf("Bug, object destructor is not called\n");
33213155Sdavidxu	else if (!destructed2)
34213155Sdavidxu		printf("Bug, cleanup handler is not called\n");
35213155Sdavidxu	else
36213155Sdavidxu		printf("OK\n");
37213155Sdavidxu}
38