kernel32: Invalidate local copy of console input event handle while reallocating console.
This commit is contained in:
parent
99a193ce7e
commit
b7f617c916
|
@ -67,6 +67,9 @@ static CRITICAL_SECTION CONSOLE_CritSect = { &critsect_debug, -1, 0, 0, 0, 0 };
|
||||||
static const WCHAR coninW[] = {'C','O','N','I','N','$',0};
|
static const WCHAR coninW[] = {'C','O','N','I','N','$',0};
|
||||||
static const WCHAR conoutW[] = {'C','O','N','O','U','T','$',0};
|
static const WCHAR conoutW[] = {'C','O','N','O','U','T','$',0};
|
||||||
|
|
||||||
|
/* FIXME: this is not thread safe */
|
||||||
|
static HANDLE console_wait_event;
|
||||||
|
|
||||||
/* map input records to ASCII */
|
/* map input records to ASCII */
|
||||||
static void input_records_WtoA( INPUT_RECORD *buffer, int count )
|
static void input_records_WtoA( INPUT_RECORD *buffer, int count )
|
||||||
{
|
{
|
||||||
|
@ -378,9 +381,6 @@ BOOL WINAPI CloseConsoleHandle(HANDLE handle)
|
||||||
*/
|
*/
|
||||||
HANDLE WINAPI GetConsoleInputWaitHandle(void)
|
HANDLE WINAPI GetConsoleInputWaitHandle(void)
|
||||||
{
|
{
|
||||||
static HANDLE console_wait_event;
|
|
||||||
|
|
||||||
/* FIXME: this is not thread safe */
|
|
||||||
if (!console_wait_event)
|
if (!console_wait_event)
|
||||||
{
|
{
|
||||||
SERVER_START_REQ(get_console_wait_event)
|
SERVER_START_REQ(get_console_wait_event)
|
||||||
|
@ -1131,6 +1131,9 @@ BOOL WINAPI FreeConsole(VOID)
|
||||||
{
|
{
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
|
||||||
|
/* invalidate local copy of input event handle */
|
||||||
|
console_wait_event = 0;
|
||||||
|
|
||||||
SERVER_START_REQ(free_console)
|
SERVER_START_REQ(free_console)
|
||||||
{
|
{
|
||||||
ret = !wine_server_call_err( req );
|
ret = !wine_server_call_err( req );
|
||||||
|
@ -1230,6 +1233,9 @@ BOOL WINAPI AllocConsole(void)
|
||||||
/* happens when we're running on a Unix console */
|
/* happens when we're running on a Unix console */
|
||||||
if (handle_in != INVALID_HANDLE_VALUE) CloseHandle(handle_in);
|
if (handle_in != INVALID_HANDLE_VALUE) CloseHandle(handle_in);
|
||||||
|
|
||||||
|
/* invalidate local copy of input event handle */
|
||||||
|
console_wait_event = 0;
|
||||||
|
|
||||||
GetStartupInfoA(&siCurrent);
|
GetStartupInfoA(&siCurrent);
|
||||||
|
|
||||||
memset(&siConsole, 0, sizeof(siConsole));
|
memset(&siConsole, 0, sizeof(siConsole));
|
||||||
|
|
Loading…
Reference in New Issue