Flush stdio on exit.

This commit is contained in:
Alexandre Julliard 2002-07-05 21:23:07 +00:00
parent bef32c65a2
commit af0d206752
3 changed files with 20 additions and 10 deletions

View file

@ -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)
{

View file

@ -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())

View file

@ -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 */