[#10793] 今度こそ (patch of the ruby-1.4.6 for NT4.0&VC4.0 on DEC Alpha.) — kou@...1609.sip.eee.yamaguchi-u.ac.jp (Koichi Okada)

岡田です。

10 messages 2000/09/01

[#10920] SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2000/09/14
[#11077] Re: SIGINT on windows — matz@... (Yukihiro Matsumoto) 2000/09/27

まつもと ゆきひろです

[#10944] dummy DLL on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

19 messages 2000/09/18
[#10955] Re: dummy DLL on Windows — WATANABE Hirofumi <eban@...> 2000/09/19

わたなべです.

[#10963] Re: dummy DLL on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/09/19

なかだです。

[#10964] Re: dummy DLL on Windows — WATANABE Hirofumi <eban@...> 2000/09/19

わたなべです.

[#10978] [PATCH] require in require — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

15 messages 2000/09/20

[#10985] httphead.rb proxy version problem — Katsuyuki Komatsu <komatsu@...>

小松です.

16 messages 2000/09/20
[#10989] Re: httphead.rb proxy version problem — Minero Aoki <aamine@...> 2000/09/20

あおきです。

[ruby-dev:10981] Re: [PATCH] require in require

From: matz@... (Yukihiro Matsumoto)
Date: 2000-09-20 05:04:50 UTC
List: ruby-dev #10981
まつもと ゆきひろです

In message "[ruby-dev:10978] [PATCH] require in require"
    on 00/09/20, "Nobuyoshi.Nakada" <nobu.nakada@nifty.ne.jp> writes:
|
|なかだです。
|
|$ cat a.rb
|p __FILE__, $"
|$ cat a/b.rb
|p __FILE__, $"
|require "a"
|$ ruby -v -I. -ra/b -e0
|ruby 1.6.0 (2000-09-19) [i686-cygwin]
|"./a/b.rb"
|["a/b.rb"]
|./a/b.rb:2:in `require': Interrupt
|        from ./a/b.rb:2
|
|  てな感じでデッドロックします。
|
|  一応こんな風にしてみました。

そーゆーことまではしなくても直るようです。他の問題も合わせ、
以下のパッチが有効ではないでしょうか?

--- /tmp/ruby-1.6.0/eval.c	Tue Sep 19 01:28:34 2000
+++ eval.c	Wed Sep 20 13:54:17 2000
@@ -3485,3 +3485,3 @@
 	struct RVarmap *vars = ruby_dyna_vars;
-	
+
 	while (vars && vars->id != 0) {
@@ -5045,3 +5045,5 @@
 	    }
-	    goto load_wait;
+	    if (strcmp(f+len, ".rb") == 0) {
+		goto load_wait;
+	    }
 	}
@@ -5868,2 +5870,3 @@
     for (vars = data->d_vars; vars; vars = vars->next) {
+	if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
 	FL_SET(vars, DVAR_DONT_RECYCLE);
@@ -5949,2 +5952,3 @@
     for (vars = data->d_vars; vars; vars = vars->next) {
+	if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
 	FL_SET(vars, DVAR_DONT_RECYCLE);
@@ -7639,2 +7643,3 @@
     rb_thread_t th;
+    struct RVarmap *vars;
 
@@ -7656,2 +7661,6 @@
 
+    for (vars = ruby_dyna_vars; vars; vars = vars->next) {
+	if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
+	FL_SET(vars, DVAR_DONT_RECYCLE);
+    }
     return th;
@@ -8142,2 +8151,3 @@
     struct tag *tag;
+    struct RVarmap *vars;
 
@@ -8153,2 +8163,8 @@
     th->thread = curr_thread->thread;
+
+    for (vars = ruby_dyna_vars; vars; vars = vars->next) {
+	if (FL_TEST(vars, DVAR_DONT_RECYCLE)) break;
+	FL_SET(vars, DVAR_DONT_RECYCLE);
+    }
+
     if (THREAD_SAVE_CONTEXT(th)) {

In This Thread