Reactos
at master 34 lines 837 B view raw
1// 2// _onexit.c 3// 4// Copyright (c) 2024 Timo Kreuzer 5// 6// Implementation of _onexit. 7// 8// SPDX-License-Identifier: MIT 9// 10 11#include <stdlib.h> 12#include <internal_shared.h> 13#include <corecrt_startup.h> 14#include <assert.h> 15 16_onexit_table_t module_local_atexit_table; 17int module_local_atexit_table_initialized = 0; 18 19int __cdecl __scrt_initialize_onexit(void) 20{ 21 _initialize_onexit_table(&module_local_atexit_table); 22 module_local_atexit_table_initialized = 1; 23 return 0; 24} 25 26// CRT startup initializer 27_CRTALLOC(".CRT$XIAA") _PIFV const __scrt_onexit_initializer = __scrt_initialize_onexit; 28 29_onexit_t __cdecl _onexit(_In_opt_ _onexit_t _Func) 30{ 31 assert(module_local_atexit_table_initialized == 1); 32 int result = _register_onexit_function(&module_local_atexit_table, _Func); 33 return (result == 0) ? _Func : NULL; 34}