[#45703] test_advise failure on GNU/Linux — Tanaka Akira <tanaka.akira@...>

今朝、気がついたのですが、手元で test_advise が失敗します。

11 messages 2012/06/05
[#45705] Re: test_advise failure on GNU/Linux — KOSAKI Motohiro <kosaki.motohiro@...> 2012/06/06

小崎です

[#45735] [ruby-trunk - Feature #6587][Open] proposal: adding new methods File.rootname and Pathname#rootname — "usa (Usaku NAKAMURA)" <usa@...>

14 messages 2012/06/14

[#45745] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult — SASADA Koichi <ko1@...>

見逃していました.

19 messages 2012/06/14
[#45747] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult — Yugui <yugui@...> 2012/06/15

2012/6/15 SASADA Koichi <[email protected]>:

[#45748] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult — SASADA Koichi <ko1@...> 2012/06/15

 ささだです.

[#45794] :new_pgroup and :pgroup option for spawn. — Tanaka Akira <akr@...>

process.c で気がついたのですが、spawn に Windows 用の :new_pgroup というオプションが

12 messages 2012/06/23
[#45800] Re: :new_pgroup and :pgroup option for spawn. — "U.Nakamura" <usa@...> 2012/06/25

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

[#45818] [ruby-trunk - Feature #6643][Open] io.seek(off, :end) — "akr (Akira Tanaka)" <akr@...>

30 messages 2012/06/25

[ruby-dev:45846] [ruby-trunk - Bug #5832] 意図しないブロック渡しが行われる

From: "ko1 (Koichi Sasada)" <redmine@...>
Date: 2012-06-25 20:41:55 UTC
List: ruby-dev #45846
Issue #5832 has been updated by ko1 (Koichi Sasada).


見落としていてすみません.

良さそうに見えるので,テストが通れば,テストを追加してコミット頂けませんか.

----------------------------------------
Bug #5832: 意図しないブロック渡しが行われる
https://bugs.ruby-lang.org/issues/5832#change-27446

Author: ktsj (Kazuki Tsujimoto)
Status: Assigned
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: YARV
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-01-01 trunk 34167) [x86_64-linux]


=begin
辻本です。

invoke_block_from_cの呼び出しの際に渡していたブロックが
VM loopから続けて呼び出される別のメソッドにも渡されてしまうケースがあります。

 $ ./ruby -ve "
 require 'pp'
 require 'pathname'

 class <<File
   alias realpath_orig realpath

   def realpath(*args)
     yield if block_given?
     realpath_orig(*args)
   end
 end

 pathname = Pathname.new('.')
 Class.new do
   define_method(:foo) {
     pathname.realpath
   }
 end.new.foo { pp caller }
 "
 ruby 2.0.0dev (2012-01-01 trunk 34167) [x86_64-linux]
 ["-e:9:in `realpath'",
  "-e:17:in `realpath'",
  "-e:17:in `block (2 levels) in <main>'",
  "-e:19:in `<main>'"]

blockptrはフレームに積まれることになるので、
passed_blockに代入する行は単純に削除してしまって良いと思います。

 diff --git a/vm.c b/vm.c
 index 2f38eee..3ea190f 100644
 --- a/vm.c
 +++ b/vm.c
 @@ -597,7 +597,6 @@ invoke_block_from_c(rb_thread_t *th, const rb_block_t *block,
  			     iseq->local_size - arg_size);
  	ncfp->me = th->passed_me;
  	th->passed_me = 0;
 -	th->passed_block = blockptr;
  
  	if (cref) {
  	    th->cfp->dfp[-1] = (VALUE)cref;
=end



-- 
http://bugs.ruby-lang.org/

In This Thread