| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Program Files (x86)/Windows Kits/10/Source/10.0.19041.0/ucrt/misc/ |
Upload File : |
//
// terminate.cpp
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// The terminate handler
//
#include <corecrt_internal.h>
#include <corecrt_terminate.h>
static terminate_handler __cdecl get_terminate_or_default(
__acrt_ptd const* const ptd
) throw()
{
return ptd->_terminate ? ptd->_terminate : &abort;
}
extern "C" terminate_handler __cdecl _get_terminate()
{
return get_terminate_or_default(__acrt_getptd());
}
extern "C" terminate_handler __cdecl set_terminate(
terminate_handler const new_handler
)
{
__acrt_ptd* const ptd = __acrt_getptd();
terminate_handler const old_handler = get_terminate_or_default(ptd);
ptd->_terminate = new_handler;
return old_handler;
}
extern "C" void __cdecl terminate()
{
terminate_handler const handler = __acrt_getptd()->_terminate;
if (handler)
{
// Note: We cannot allow any exceptions to propagate from a user-
// registered terminate handler, so if any structured exception escapes
// the user handler we abort.
__try
{
handler();
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
; // Deliberately do nothing
}
}
// If the terminate handler returned, faulted, or otherwise failed to end
// execution, we will do it:
abort();
}