X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fwin32%2Fcrt0.c;h=533ee98b862785cb6cabaee6be391629bf7bedd6;hb=fa53a74861e1ac9513ae57b7bd7889b85ac0fbe9;hp=7da2a8151e2ad3b279e0c9005d45b8b56b22c919;hpb=026148e2e90368c0b23192f506e15aa6197105aa;p=pdclib diff --git a/platform/win32/crt0.c b/platform/win32/crt0.c index 7da2a81..533ee98 100644 --- a/platform/win32/crt0.c +++ b/platform/win32/crt0.c @@ -5,6 +5,9 @@ #include #include // Watcom bug: winnt.h assumes string.h defines wchar_t #include +#include <_PDCLIB_io.h> +#include <_PDCLIB_locale.h> +#include <_PDCLIB_clocale.h> static char ** argvToAnsi( wchar_t ** wargv, int argc ) { @@ -104,9 +107,9 @@ void __cdecl mainCRTStartup( void ); void __cdecl mainCRTStartup( void ) { - stdin->handle = GetStdHandle(STD_INPUT_HANDLE); - stdout->handle = GetStdHandle(STD_OUTPUT_HANDLE); - stderr->handle = GetStdHandle(STD_ERROR_HANDLE); + stdin->handle.pointer = GetStdHandle(STD_INPUT_HANDLE); + stdout->handle.pointer = GetStdHandle(STD_OUTPUT_HANDLE); + stderr->handle.pointer = GetStdHandle(STD_ERROR_HANDLE); oldFilter = SetUnhandledExceptionFilter( sehExceptionFilter ); @@ -114,11 +117,21 @@ void __cdecl mainCRTStartup( void ) wargv = CommandLineToArgvW(cl, &argc); argv = argvToAnsi(wargv, argc); + _PDCLIB_initclocale( &_PDCLIB_global_locale ); + + if(tss_create(&_PDCLIB_locale_tss, (tss_dtor_t) freelocale) + != thrd_success) { + fputs( "Error during C runtime initialization: " + "Unable to allocate locale TLS", stderr ); + exit( EXIT_FAILURE ); + } + if( mtx_init(&stdin->lock, mtx_recursive) != thrd_success || mtx_init(&stdout->lock, mtx_recursive) != thrd_success || mtx_init(&stderr->lock, mtx_recursive) != thrd_success ) { fputs( "Error during C runtime initialization: " "Unable to allocate stdio mutex", stderr ); + exit( EXIT_FAILURE ); } atexit(freeArgs);