[#15067] rb_eval_string — OJ <oj@...7.com>

OJです。

39 messages 2001/11/08
[#15068] Re: rb_eval_string — nobu.nakada@... 2001/11/08

なかだです。

[#15069] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/08

OJです。

[#15071] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15077] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/09

OJです。

[#15078] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/09

わたなべです。

[#15083] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15088] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15089] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15092] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15096] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15109] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15112] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15114] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15115] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15119] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15121] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15124] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15126] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15174] strange behavior about PTY.spawn — akira yamada / やまだあきら <akira@...>

18 messages 2001/11/15
[#15176] Re: strange behavior about PTY.spawn — matz@... (Yukihiro Matsumoto) 2001/11/15

まつもと ゆきひろです

[#15251] Re: [ruby-ext:01999] Re: syslog module is becoming ready — "Akinori MUSHA" <knu@...>

 というわけで 1.7 に syslog モジュールを入れました。

43 messages 2001/11/26

[#15270] ruby on NetBSD — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

25 messages 2001/11/28
[#15271] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128181510.3D11.USA@osb.att.ne.jp>

[#15272] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/28

こんにちは、なかむら(う)です。

[#15278] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128182726.3D14.USA@osb.att.ne.jp>

[#15296] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/29

こんにちは、なかむら(う)です。

[#15298] time.rb — Tanaka Akira <akr@...17n.org>

というわけで、timex.rb 改め time.rb が rough に入ったのでご意見募集です。

27 messages 2001/11/29

[ruby-dev:15036] [PATCH] eval.c (rb_call0): arguments might be discarded

From: UENO Katsuhiro <unnie@...>
Date: 2001-11-05 10:27:29 UTC
List: ruby-dev #15036
うえのです。

こんなスクリプトを書いて遊んでいたのですが、

  class FlyweightFactory

    def initialize(&constructor)
      @constructor = constructor
      @hash = {}
    end

    def callback(args)
      proc { |id| @hash.delete args }
    end
    private :callback

    def create(*args)
      p args
      oid = @hash[args]
      if oid then
        begin
          obj = ObjectSpace._id2ref(oid)
        rescue RangeError
          oid = nil
        end
      end
      unless oid then
        obj = @constructor.call(*args)
        ObjectSpace.define_finalizer(obj, callback(args))
        @hash[args] = obj.id
      end
      obj
    end

  end

  factory = FlyweightFactory.new { |a,b| "#{a}#{b}" }
  100000.times { |i| factory.create(i, i) }

実行してみると妙なエラーが発生して終了してしまいます。

  % ruby -v
  ruby 1.6.5 (2001-09-19) [i686-linux]
  % ruby test.rb
  [0, 0]
  [1, 1]
  [2, 2]
  ...skip...
  [2618, 2618]
  [2619, 2619]
  [2620, 2620]
  [2621, 2621]
  [2622, 2622]
  [2623, 2623]
  [2624, 2624]
  nil           # <== ?????
  test.rb:24: wrong # of arguments (0 for 2) (ArgumentError)
        from test.rb:33:in `call'
        from test.rb:24:in `create'
        from test.rb:35
        from test.rb:35:in `times'
        from test.rb:35


引数の配列を rb_ary_new4 で作るときに GC が始まり、ファイナライザが
実行されて rb_yield0 から scope_dup が呼び出されることで
rb_call0 のローカル変数の local_vars と ruby_scope->local_vars が
等しくなくなってしまい、作成した配列をローカル変数の値として正しく
格納できないことがあるのが原因のようです。

ruby-1.6.5 に対するパッチです。


--- eval.c.orig	Mon Nov  5 18:33:01 2001
+++ eval.c	Mon Nov  5 18:35:00 2001
@@ -4464,7 +4464,7 @@
 				v = rb_ary_new4(argc,argv);
 			    else
 				v = rb_ary_new2(0);
-			    local_vars[node->nd_rest] = v;
+			    ruby_scope->local_vars[node->nd_rest] = v;
 			}
 		    }
 		}



 --  ----  -     - - -- -
うえの かつひろ <unnie@blue.sky.or.jp>

In This Thread

Prev Next