[#11952] NORETURN — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

24 messages 2001/01/10
[#11956] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11957] Re: NORETURN — matz@... (Yukihiro Matsumoto) 2001/01/10

まつもと ゆきひろです

[#11958] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11959] CVS branches (Re: Re: NORETURN) — matz@... (Yukihiro Matsumoto) 2001/01/10

[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>

18 messages 2001/01/27
[#12091] Re: string#index, gsub, []= のバグ? — matz@... (Yukihiro Matsumoto) 2001/01/27

まつもと ゆきひろです

[ruby-dev:12124] Re: return from passed block

From: matz@... (Yukihiro Matsumoto)
Date: 2001-01-29 05:27:57 UTC
List: ruby-dev #12124
まつもと ゆきひろです

In message "[ruby-dev:12123] Re: return from passed block"
    on 01/01/29, "Nobuyoshi.Nakada" <nobu.nakada@nifty.ne.jp> writes:

|At Mon, 29 Jan 2001 13:41:59 +0900
|WATANABE Tetsuya <tetsu@jpn.hp.com> wrote:
|> ||  2001-01-23(1.6.2, 1.7.0)で、以下のコードの hoge1 のところまで実行され
|> ||てしまいます。これって仕様変更じゃないですよね。
|> |
|> |添付のプログラムを実行してなにも出力されなければ良し、:hoge1
|> |が出力されたらダメという意味ですよね。おかしいなあ、私のとこ
|> |ろではなにも出力しないんですが。
|
|  :foo が一回だけ出ることを期待してます。

分かりました。こんな感じかな?

--- eval.c	2001/01/29 05:10:41	1.149
+++ eval.c	2001/01/29 05:26:43
@@ -6335,3 +6335,19 @@
     if (_block.tag->dst == state) {
-	state &= TAG_MASK;
+	if (orphan) {
+	    state &= TAG_MASK;
+	}
+	else {
+	    struct BLOCK *ptr = old_block;
+
+	    while (ptr) {
+		if (ptr->scope == _block.scope) {
+		    ptr->tag->dst = state;
+		    break;
+		}
+		ptr = ptr->prev;
+	    }
+	    if (!ptr) {
+		state &= TAG_MASK;
+	    }
+	}
     }

In This Thread