//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // test get_unexpected #include #include #include void f1() {} void f2() {} void f3() { std::exit(0); } int main() { std::unexpected_handler old = std::get_unexpected(); // verify there is a previous unexpected handler assert(old); std::set_unexpected(f1); assert(std::get_unexpected() == f1); // verify f1 was replace with f2 std::set_unexpected(f2); assert(std::get_unexpected() == f2); // verify calling original unexpected handler calls terminate std::set_terminate(f3); #if !defined(__ANDROID__) // Disable the following for Android whoes __gabixx::__default_terminate() // causes segfault on purpose to get stack dump (*old)(); assert(0); #endif }