Something went wrong. Try again.
Reactos
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768//// shared_initialization.cpp//// Copyright (c) Microsoft Corporation. All rights reserved.//// Shared initialization logic used by both the AppCRT and the DesktopCRT.//#include <corecrt_internal.h>
extern "C" bool __cdecl __acrt_execute_initializers( __acrt_initializer const* const first, __acrt_initializer const* const last ){ if (first == last) return true;
// Execute the initializers in [first, last), in order: __acrt_initializer const* it = first; for (; it != last; ++it) { if (it->_initialize == nullptr) continue;
if (!(it->_initialize)()) break; }
// If we reached the end, all initializers completed successfully: if (it == last) return true;
// Otherwise, the initializer pointed to by it failed. We need to roll back // the initialization by executing the uninitializers corresponding to each // of the initializers that completed successfully: for (; it != first; --it) { // During initialization roll back, we do not execute uninitializers // that have no corresponding initializer: if ((it - 1)->_initialize == nullptr || (it - 1)->_uninitialize == nullptr) continue;
(it - 1)->_uninitialize(false); }
return false;}
extern "C" bool __cdecl __acrt_execute_uninitializers( __acrt_initializer const* const first, __acrt_initializer const* const last ){ if (first == last) return true;
// Execute the uninitializers in [first, last), in reverse order: for (__acrt_initializer const* it = last; it != first; --it) { if ((it - 1)->_uninitialize == nullptr) continue;
(it - 1)->_uninitialize(false); }
return true;}