1e04b953eSDavid Xu 2*ef135466SEd Maste static int destructed; 3*ef135466SEd Maste static int destructed2; 4e04b953eSDavid Xu 5e04b953eSDavid Xu class Test { 6e04b953eSDavid Xu public: Test()7e04b953eSDavid Xu Test() { printf("Test::Test()\n"); } ~Test()8e04b953eSDavid Xu ~Test() { printf("Test::~Test()\n"); destructed = 1; } 9e04b953eSDavid Xu }; 10e04b953eSDavid Xu 11e04b953eSDavid Xu void cleanup_handler(void * arg __unused)12*ef135466SEd Mastecleanup_handler(void *arg __unused) 13e04b953eSDavid Xu { 14e04b953eSDavid Xu destructed2 = 1; 15e04b953eSDavid Xu printf("%s()\n", __func__); 16e04b953eSDavid Xu } 17e04b953eSDavid Xu 18e04b953eSDavid Xu void check_destruct(void)19e04b953eSDavid Xucheck_destruct(void) 20e04b953eSDavid Xu { 21e04b953eSDavid Xu if (!destructed) 22e04b953eSDavid Xu printf("Bug, object destructor is not called\n"); 23e04b953eSDavid Xu else 24e04b953eSDavid Xu printf("OK\n"); 25e04b953eSDavid Xu } 26e04b953eSDavid Xu 27e04b953eSDavid Xu void check_destruct2(void)28e04b953eSDavid Xucheck_destruct2(void) 29e04b953eSDavid Xu { 30e04b953eSDavid Xu if (!destructed) 31e04b953eSDavid Xu printf("Bug, object destructor is not called\n"); 32e04b953eSDavid Xu else if (!destructed2) 33e04b953eSDavid Xu printf("Bug, cleanup handler is not called\n"); 34e04b953eSDavid Xu else 35e04b953eSDavid Xu printf("OK\n"); 36e04b953eSDavid Xu } 37