diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-02-23 20:46:40 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2021-02-23 20:46:40 +0900 |
commit | 41eb4fbf86e7ae9c9ff993e07a19fa44eb74be9b (patch) | |
tree | 125a86a85739729faba587cc43e912075328135c /win32/win32.c | |
parent | da18d6f0154f020733747c359b08d216db05c26a (diff) |
Fixed commit miss at 19cc24b34b0490b7c2779eec521fe0089e05f183
Diffstat (limited to 'win32/win32.c')
-rw-r--r-- | win32/win32.c | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/win32/win32.c b/win32/win32.c index fc36f75e75..eccb7f495e 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -6591,36 +6591,32 @@ constat_handle(HANDLE h) { st_data_t data; struct constat *p; - - EnterCriticalSection(&conlist_mutex); if (!conlist) { if (console_emulator_p()) { conlist = conlist_disabled; - } else { - conlist = st_init_numtable(); - install_vm_exit_handler(); + return NULL; } + conlist = st_init_numtable(); + install_vm_exit_handler(); } - if (conlist != conlist_disabled) { - 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); + 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 { - p = NULL; + st_insert(conlist, (st_data_t)h, (st_data_t)p); } - LeaveCriticalSection(&conlist_mutex); - return p; } @@ -6630,16 +6626,12 @@ constat_reset(HANDLE h) { st_data_t data; struct constat *p; - - EnterCriticalSection(&conlist_mutex); - if ( - conlist && conlist != conlist_disabled && - st_lookup(conlist, (st_data_t)h, &data) - ) { + thread_exclusive(conlist) { + if (!conlist || conlist == conlist_disabled) continue; + if (!st_lookup(conlist, (st_data_t)h, &data)) continue; p = (struct constat *)data; p->vt100.state = constat_init; } - LeaveCriticalSection(&conlist_mutex); } #define FOREGROUND_MASK (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY) |