[UCRT] Make __local_stdio_printf/scanf_options GCC compatible

This commit is contained in:
Timo Kreuzer 2024-11-09 19:21:11 +02:00
parent bb9392e4e1
commit 4ca68ffb1c

View file

@ -82,24 +82,20 @@ _CRT_BEGIN_C_HEADER
#endif #endif
#if _CRT_FUNCTIONS_REQUIRED #if _CRT_FUNCTIONS_REQUIRED
// This function must not be inlined into callers to avoid ODR violations. The __declspec(selectany) unsigned __int64 __local_stdio_printf_options_storage;
// static local variable has different names in C and in C++ translation units.
_Check_return_ _Ret_notnull_ _Check_return_ _Ret_notnull_
_CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE _CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE
__declspec(noinline) __inline unsigned __int64* __CRTDECL __local_stdio_printf_options(void) __inline unsigned __int64* __CRTDECL __local_stdio_printf_options(void)
{ {
static unsigned __int64 _OptionsStorage; return &__local_stdio_printf_options_storage;
return &_OptionsStorage;
} }
// This function must not be inlined into callers to avoid ODR violations. The __declspec(selectany) unsigned __int64 __local_stdio_scanf_options_storage;
// static local variable has different names in C and in C++ translation units.
_Check_return_ _Ret_notnull_ _Check_return_ _Ret_notnull_
_CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE _CRT_INLINE_PURE_SECURITYCRITICAL_ATTRIBUTE
__declspec(noinline) __inline unsigned __int64* __CRTDECL __local_stdio_scanf_options(void) __inline unsigned __int64* __CRTDECL __local_stdio_scanf_options(void)
{ {
static unsigned __int64 _OptionsStorage; return &__local_stdio_scanf_options_storage;
return &_OptionsStorage;
} }
#endif #endif