mirror of
https://github.com/reactos/reactos.git
synced 2024-08-30 15:18:33 +00:00
92 lines
2 KiB
C
92 lines
2 KiB
C
![]() |
/*
|
||
|
* PROJECT: MSVC runtime check support library
|
||
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||
|
* PURPOSE: Provides support functions for MSVC runtime checks
|
||
|
* PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org)
|
||
|
*/
|
||
|
|
||
|
#include <rtcapi.h>
|
||
|
|
||
|
extern _RTC_error_fnW _RTC_pErrorFuncW;
|
||
|
|
||
|
int
|
||
|
__cdecl
|
||
|
_RTC_DefaultErrorFuncW(
|
||
|
int errType,
|
||
|
const wchar_t *file,
|
||
|
int line,
|
||
|
const wchar_t *module,
|
||
|
const wchar_t *format,
|
||
|
...);
|
||
|
|
||
|
static
|
||
|
char*
|
||
|
_RTC_ErrorDescription[] =
|
||
|
{
|
||
|
"The stack pointer was wrong after returning from a function call.", /* _RTC_CHKSTK */
|
||
|
"Data was lost when a type was converted to a smaller type.", /* _RTC_CVRT_LOSS_INFO */
|
||
|
"The stack near a local variable was corrupted.", /* _RTC_CORRUPT_STACK */
|
||
|
"An uninitialized local variable was used.", /* _RTC_UNINIT_LOCAL_USE */
|
||
|
"The stack around an alloca was corrupted.", /* _RTC_CORRUPTED_ALLOCA */
|
||
|
};
|
||
|
|
||
|
int
|
||
|
__cdecl
|
||
|
_RTC_NumErrors(void)
|
||
|
{
|
||
|
/* Not supported yet */
|
||
|
__debugbreak();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
const char *
|
||
|
__cdecl
|
||
|
_RTC_GetErrDesc(
|
||
|
_RTC_ErrorNumber _Errnum)
|
||
|
{
|
||
|
if (_Errnum < (sizeof(_RTC_ErrorDescription) / sizeof(_RTC_ErrorDescription[0])))
|
||
|
{
|
||
|
return _RTC_ErrorDescription[_Errnum];
|
||
|
}
|
||
|
|
||
|
return "Invalid/Unknown error.";
|
||
|
}
|
||
|
|
||
|
int
|
||
|
__cdecl
|
||
|
_RTC_SetErrorType(
|
||
|
_RTC_ErrorNumber _Errnum,
|
||
|
int _ErrType)
|
||
|
{
|
||
|
/* Not supported yet */
|
||
|
__debugbreak();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
_RTC_error_fn
|
||
|
__cdecl
|
||
|
_RTC_SetErrorFunc(
|
||
|
_RTC_error_fn new_fn)
|
||
|
{
|
||
|
/* Not supported yet */
|
||
|
__debugbreak();
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
_RTC_error_fnW
|
||
|
__cdecl
|
||
|
_RTC_SetErrorFuncW(_RTC_error_fnW new_fn)
|
||
|
{
|
||
|
_RTC_error_fnW old_fn;
|
||
|
|
||
|
/* Get the current error func */
|
||
|
old_fn = _RTC_pErrorFuncW;
|
||
|
|
||
|
/* Set the new function or reset when 0 was passed */
|
||
|
_RTC_pErrorFuncW = new_fn ? new_fn : _RTC_DefaultErrorFuncW;
|
||
|
|
||
|
/* Return the old error func, or 0, if none was set */
|
||
|
return old_fn != _RTC_DefaultErrorFuncW ? old_fn : 0;
|
||
|
}
|
||
|
|