[#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:21448] Re: break from block yielded in until

From: Tietew <tietew-ml-ruby-dev@...>
Date: 2003-09-30 11:27:21 UTC
List: ruby-dev #21448
On Tue, 30 Sep 2003 19:06:23 +0900
In article <200309301006.h8UA61ri020702@sharui.nakada.kanuma.tochigi.jp>
[[ruby-dev:21445] Re: break from block yielded in until]
nobu.nakada@nifty.ne.jp wrote:

> rb_catch()からrb_iterate(), catch_i(), rb_f_catch(),
> rb_yield_0(), rb_yield()と呼び出されますが、ruby_scopeがずっと
> 共通になっているためrb_iterate()のPROT_ITERで止まってしまうよう
> です。

ありがとうございます。このパッチで直るようです。

> うーん、rb_iterate()でPUSH_SCOPE()してしまっていいんだろうか。
> rb_catch()でしたほうがいいような気がしなくもない。

rb_iterate を直で使ったときも同じように break が途中で止まってし
まったので,これでいいとおもいます。パッチ当てると "1" だけ出力
して止まります。

tietew@ww2:~/test/iter$ ruby1.8 -riter -e 'itertest { |i| p i; break }'
1
2
3
4
tietew@ww2:~/test/iter$ ruby1.8 -e '
> def itertest
>   test(1) { |p| yield p }
>   test(2) { |p| yield p }
>   test(3) { |p| yield p }
>   test(4) { |p| yield p }
> end
> def test(num)
>   yield num
> end
> itertest { |i| p i; break }
> '
1


---^ iter.c
#include "ruby.h"

static VALUE itertest_iter()
{
	return rb_yield(Qnil);
}

static VALUE iter_main()
{
	return rb_funcall(Qnil, rb_intern("itertest_iter"), 0);
}

static VALUE iter_test(VALUE arg, VALUE num)
{
	return rb_yield(num);
}

static VALUE itertest()
{
	rb_iterate(iter_main, Qnil, iter_test, INT2FIX(1));
	rb_iterate(iter_main, Qnil, iter_test, INT2FIX(2));
	rb_iterate(iter_main, Qnil, iter_test, INT2FIX(3));
	rb_iterate(iter_main, Qnil, iter_test, INT2FIX(4));
	return Qnil;
}

void Init_iter()
{
	rb_define_global_function("itertest_iter", itertest_iter, 0);
	rb_define_global_function("itertest", itertest, 0);
}


—[ Tietew ]——————————————————————————
 メ : tietew@tietew.net / tietew@raug.net / tietew@masuclub.net
ホペ: http://www.tietew.net/     Tietew Windows Lab.
      http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA


In This Thread