[前][次][番号順一覧][スレッド一覧]

ruby-changes:65328

From: Nobuyoshi <ko1@a...>
Date: Tue, 23 Feb 2021 21:24:49 +0900 (JST)
Subject: [ruby-changes:65328] 819dd464de (master): Fixed commit miss at 41eb4fbf86e7ae9c9ff993e07a19fa44eb74be9b

https://git.ruby-lang.org/ruby.git/commit/?id=819dd464de

From 819dd464dee2245299cb62323fe5c2b42940879e Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Tue, 23 Feb 2021 21:23:46 +0900
Subject: 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 0dc29f2..bb7471f 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -6599,32 +6599,34 @@ static struct constat * https://github.com/ruby/ruby/blob/trunk/win32/win32.c#L6599
 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;
 }
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]