From af0d2067523dadb6423a39bba37d748346f7a454 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 5 Jul 2002 21:23:07 +0000 Subject: [PATCH] Flush stdio on exit. --- dlls/msvcrt/file.c | 9 +++++++++ dlls/msvcrt/main.c | 9 +-------- dlls/msvcrt/msvcrt.h | 12 ++++++++++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index a04f2fdd07c..d9fa5e7054c 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -202,6 +202,15 @@ void msvcrt_init_io(void) } } +/* free everything on process exit */ +void msvcrt_free_io(void) +{ + _fcloseall(); + _close(0); + _close(1); + _close(2); +} + /* INTERNAL: Flush stdio file buffer */ static int msvcrt_flush_buffer(MSVCRT_FILE* file) { diff --git a/dlls/msvcrt/main.c b/dlls/msvcrt/main.c index adc7214f9e5..06313237804 100644 --- a/dlls/msvcrt/main.c +++ b/dlls/msvcrt/main.c @@ -33,13 +33,6 @@ static inline BOOL msvcrt_init_tls(void); static inline BOOL msvcrt_free_tls(void); const char* msvcrt_get_reason(DWORD reason) WINE_UNUSED; -void msvcrt_init_io(void); -void msvcrt_init_console(void); -void msvcrt_free_console(void); -void msvcrt_init_args(void); -void msvcrt_free_args(void); -void msvcrt_init_vtables(void); - typedef void* (*MSVCRT_malloc_func)(unsigned int); typedef void (*MSVCRT_free_func)(void*); @@ -82,7 +75,7 @@ BOOL WINAPI MSVCRT_Init(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) break; case DLL_PROCESS_DETACH: msvcrt_free_mt_locks(); - _fcloseall(); + msvcrt_free_io(); msvcrt_free_console(); msvcrt_free_args(); if (!msvcrt_free_tls()) diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index aa68e9777b3..7cf80f55ccd 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -59,7 +59,15 @@ LPWSTR msvcrt_wstrndup(LPCWSTR, unsigned int); int MSVCRT__set_new_mode(int mode); /* Setup and teardown multi threaded locks */ -void msvcrt_init_mt_locks(void); -void msvcrt_free_mt_locks(void); +extern void msvcrt_init_mt_locks(void); +extern void msvcrt_free_mt_locks(void); + +extern void msvcrt_init_io(void); +extern void msvcrt_free_io(void); +extern void msvcrt_init_console(void); +extern void msvcrt_free_console(void); +extern void msvcrt_init_args(void); +extern void msvcrt_free_args(void); +extern void msvcrt_init_vtables(void); #endif /* __WINE_MSVCRT_H */ -- 2.11.4.GIT