From 819dd464dee2245299cb62323fe5c2b42940879e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 23 Feb 2021 21:23:46 +0900 Subject: [PATCH] Fixed commit miss at 41eb4fbf86e7ae9c9ff993e07a19fa44eb74be9b --- win32/win32.c | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/win32/win32.c b/win32/win32.c index 0dc29f209f..bb7471fbaf 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -6599,32 +6599,34 @@ static struct constat * constat_handle(HANDLE h) { st_data_t data; - struct constat *p; - if (!conlist) { - if (console_emulator_p()) { - conlist = conlist_disabled; - return NULL; + struct constat *p = NULL; + thread_exclusive(conlist) { + if (!conlist) { + if (console_emulator_p()) { + conlist = conlist_disabled; + continue; + } + conlist = st_init_numtable(); + install_vm_exit_handler(); } - conlist = st_init_numtable(); - install_vm_exit_handler(); - } - else if (conlist == conlist_disabled) { - return NULL; - } - if (st_lookup(conlist, (st_data_t)h, &data)) { - p = (struct constat *)data; - } - else { - CONSOLE_SCREEN_BUFFER_INFO csbi; - p = ALLOC(struct constat); - p->vt100.state = constat_init; - p->vt100.attr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED; - p->vt100.reverse = 0; - p->vt100.saved.X = p->vt100.saved.Y = 0; - if (GetConsoleScreenBufferInfo(h, &csbi)) { - p->vt100.attr = csbi.wAttributes; + else if (conlist == conlist_disabled) { + continue; + } + if (st_lookup(conlist, (st_data_t)h, &data)) { + p = (struct constat *)data; + } + else { + CONSOLE_SCREEN_BUFFER_INFO csbi; + p = ALLOC(struct constat); + p->vt100.state = constat_init; + p->vt100.attr = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED; + p->vt100.reverse = 0; + p->vt100.saved.X = p->vt100.saved.Y = 0; + if (GetConsoleScreenBufferInfo(h, &csbi)) { + p->vt100.attr = csbi.wAttributes; + } + st_insert(conlist, (st_data_t)h, (st_data_t)p); } - st_insert(conlist, (st_data_t)h, (st_data_t)p); } return p; }