[#21338] $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

21 messages 2003/09/04
[#21346] Re: $SAFE=4 での autoload — nobu.nakada@... 2003/09/04

なかだです。

[#21359] Re: $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...> 2003/09/05

永井@知能.九工大です.

[#21419] Makefile.inのlex.c — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

15 messages 2003/09/28

[ruby-dev:21388] Re: LocalJumpError -> ThreadError

From: matz@... (Yukihiro Matsumoto)
Date: 2003-09-17 03:26:32 UTC
List: ruby-dev #21388
まつもと ゆきひろです

In message "[ruby-dev:21386] Re: LocalJumpError -> ThreadError"
    on 03/09/17, Masatoshi Seki <m_seki@mva.biglobe.ne.jp> writes:

|> もともとThread内部でのreturnにはThreadErrorをあげていたはず
|> です(だから仕様変更のつもりではない)。たぶんどこかで微妙に動
|> 作が違ってしまったのでしょう。再現スクリプトはありますか?
|
|後者(return)はまだ準備できていませんが、前者(break)はdrbのrunit/test_drb.rbです。
|irbではこんな感じです。

今朝調べてみたら、純正1.8.0ではbreakでは例外をあげていません
でした。以下のパッチでどうでしょう。

returnの方は引き続きお待ちしております。

--- eval.c	12 Sep 2003 03:30:45 -0000	1.535
+++ eval.c	17 Sep 2003 03:25:36 -0000
@@ -4030,3 +4030,3 @@ localjump_destination(state, scope, retv
     while (tt) {
-	if (tt->tag == PROT_PCALL ||
+	if (tt->tag == PROT_PCALL || (tt->tag == PROT_THREAD && state == TAG_BREAK) ||
 	    (tt->tag == PROT_CALL || tt->tag == tag) && tt->scope == scope) {
@@ -4038,4 +4038,3 @@ localjump_destination(state, scope, retv
 	if (tt->tag == PROT_THREAD) {
-	    rb_raise(rb_eThreadError, "%s jump can't across threads",
-		     (state == TAG_BREAK) ? "break" : "return");
+	    rb_raise(rb_eThreadError, "return jump can't across threads");
 	}

In This Thread