/* * 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 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; }