[#21508] eval BEGIN/END at runtime — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです。

15 messages 2003/10/06

[#21616] access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...>

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

44 messages 2003/10/14
[#21643] Re: access ENV on $SAFE==4 — matz@... (Yukihiro Matsumoto) 2003/10/20

まつもと ゆきひろです

[#21646] Re: access ENV on $SAFE==4 — TADA Tadashi <sho@...> 2003/10/20

ただただしです。

[#21656] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/20

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

[#21695] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/23

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

[#21696] Re: access ENV on $SAFE==4 — nobu.nakada@... 2003/10/23

なかだです。

[#21697] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/23

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

[#21698] Re: access ENV on $SAFE==4 — nobu.nakada@... 2003/10/23

なかだです。

[#21704] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/24

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

[#21712] Re: access ENV on $SAFE==4 — matz@... (Yukihiro Matsumoto) 2003/10/24

まつもと ゆきひろです

[#21713] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/24

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

[#21715] Re: access ENV on $SAFE==4 — matz@... (Yukihiro Matsumoto) 2003/10/25

まつもと ゆきひろです

[#21718] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/25

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

[#21720] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/25

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

[#21721] Re: access ENV on $SAFE==4 — matz@... (Yukihiro Matsumoto) 2003/10/25

まつもと ゆきひろです

[#21723] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/25

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

[#21727] Re: access ENV on $SAFE==4 — Hidetoshi NAGAI <nagai@...> 2003/10/26

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

[#21682] ruby-tk hangs when exception is raised — akira yamada <akira@...>

62 messages 2003/10/23
[#21683] Re: ruby-tk hangs when exception is raised — nobu.nakada@... 2003/10/23

なかだです。

[#21685] Re: ruby-tk hangs when exception is raised — akira yamada / やまだあきら <akira@...> 2003/10/23

[#21687] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/10/23

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

[#21688] Re: ruby-tk hangs when exception is raised — akira yamada / やまだあきら <akira@...> 2003/10/23

[#21691] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/10/23

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

[#21693] Re: ruby-tk hangs when exception is raised — akira yamada / やまだあきら <akira@...> 2003/10/23

[#21694] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/10/23

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

[#21736] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/10/28

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

[#21744] Re: ruby-tk hangs when exception is raised — akira yamada / やまだあきら <akira@...> 2003/10/28

[#21797] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/10/31

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

[#21801] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/11/01

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

[#21825] Re: ruby-tk hangs when exception is raised — Hidetoshi NAGAI <nagai@...> 2003/11/04

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

[#21833] pthread trouble on tcltklib (Re: ruby-tk hangs when exception is raised) — Hidetoshi NAGAI <nagai@...> 2003/11/05

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

[#21835] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/05

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

[#21900] Re: pthread trouble on tcltklib — nobu.nakada@... 2003/11/11

なかだです。

[#21901] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/12

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

[#21905] Re: pthread trouble on tcltklib — nobu.nakada@... 2003/11/12

なかだです。

[#21908] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/12

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

[#21914] Re: pthread trouble on tcltklib — nobu.nakada@... 2003/11/12

なかだです。

[#21915] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/12

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

[#21916] Re: pthread trouble on tcltklib — nobu.nakada@... 2003/11/12

なかだです。

[#21922] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/14

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

[#21929] Re: pthread trouble on tcltklib — Tietew <tietew-ml-ruby-dev@...> 2003/11/17

[#21930] Re: pthread trouble on tcltklib — nobu.nakada@... 2003/11/17

なかだです。

[#21931] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/17

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

[#21934] Re: pthread trouble on tcltklib — nobu.nakada@... 2003/11/17

なかだです。

[#21937] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/17

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

[#21952] Re: pthread trouble on tcltklib — matz@... (Yukihiro Matsumoto) 2003/11/18

まつもと ゆきひろです

[#21957] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/19

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

[#21958] Re: pthread trouble on tcltklib — Tietew <tietew-ml-ruby-dev@...> 2003/11/19

[#21959] Re: pthread trouble on tcltklib — Hidetoshi NAGAI <nagai@...> 2003/11/19

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

[#21960] Re: pthread trouble on tcltklib — Tietew <tietew-ml-ruby-dev@...> 2003/11/19

[#21707] drb Hash#each — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

22 messages 2003/10/24
[#21708] Re: drb Hash#each — m_seki@... 2003/10/24

[#21709] Re: drb Hash#each — matz@... (Yukihiro Matsumoto) 2003/10/24

まつもと ゆきひろです

[#21710] Re: drb Hash#each — m_seki@... 2003/10/24

[#21747] ruby 1.8.1 preview1 schedule — matz@... (Yukihiro Matsumoto)

関係者各位、

25 messages 2003/10/29

[ruby-dev:21476] Re: break from block yielded in until

From: nobu.nakada@...
Date: 2003-10-03 04:00:29 UTC
List: ruby-dev #21476
なかだです。

At Tue, 30 Sep 2003 21:26:34 +0900,
Yukihiro Matsumoto wrote:
> |うーん、rb_iterate()でPUSH_SCOPE()してしまっていいんだろうか。
> |rb_catch()でしたほうがいいような気がしなくもない。
> 
> これではまずいんです。rb_iter_break()がちゃんと動作しなくな
> るため、Enumerable#findなどが動かなくなります。

やっぱりrb_catch()でPUSH_SCOPE()する以外ないみたいですが、
[ruby-dev:21448]のような場合はどうしましょうか。

スコープを分ける関数を追加する、というのも考えられますが…。

* eval.c (rb_scope): new API; create new ruby scope and execute
  given function in it.  [ruby-dev:21448]

* eval.c (rb_catch): use rb_scope.


Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.546
diff -u -2 -p -r1.546 eval.c
--- eval.c	2 Oct 2003 08:24:45 -0000	1.546
+++ eval.c	3 Oct 2003 03:21:54 -0000
@@ -10153,4 +10153,24 @@ Init_Thread()
 }
 
+VALUE
+rb_scope(func, data)
+    VALUE (*func)();
+    VALUE data;
+{
+    int state;
+    VALUE val = Qnil;		/* OK */
+
+    PUSH_TAG(PROT_NONE);
+    PUSH_SCOPE();
+    if ((state = EXEC_TAG()) == 0) {
+	val = func(data);
+    }
+    POP_SCOPE();
+    POP_TAG();
+    if (state) JUMP_TAG(state);
+
+    return val;
+}
+
 static VALUE
 rb_f_catch(dmy, tag)
@@ -10182,4 +10202,16 @@ catch_i(tag)
 }
 
+struct catch_arg {
+    VALUE tag, (*func)(), data;
+};
+
+static VALUE
+catch_scope(data)
+    VALUE data;
+{
+    struct catch_arg *arg = (struct catch_arg *)data;
+    return rb_iterate((VALUE(*)_((VALUE)))catch_i, arg->tag, arg->func, arg->data);
+}
+
 VALUE
 rb_catch(tag, func, data)
@@ -10188,17 +10220,10 @@ rb_catch(tag, func, data)
     VALUE data;
 {
-    int state;
-    VALUE val = Qnil;		/* OK */
+    struct catch_arg arg;
 
-    PUSH_TAG(PROT_NONE);
-    PUSH_SCOPE();
-    if ((state = EXEC_TAG()) == 0) {
-	val = rb_iterate((VALUE(*)_((VALUE)))catch_i, ID2SYM(rb_intern(tag)), func, data);
-    }
-    POP_SCOPE();
-    POP_TAG();
-    if (state) JUMP_TAG(state);
-
-    return val;
+    arg.tag = ID2SYM(rb_intern(tag));
+    arg.func = func;
+    arg.data = data;
+    return rb_scope(catch_scope, (VALUE)&arg);
 }
 


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread