Project

General

Profile

Actions

Bug #6981

closed

set_trace_func passes strange bindng on method call defined by define_method

Added by ko1 (Koichi Sasada) over 12 years ago. Updated over 9 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100]
Backport:
[ruby-core:47429]

Description

set_trace_func passes strange binding on method call ("call") if invoked method was defined by define_method. Correctly speaking, the caller's binding was passed.

example

class C
define_method(:foo){
p:foo
}

def bar
p:bar
end
end

set_trace_func(lambda{|ev, *args|
if ev == 'call'
p eval('self', args[3])
end
})
C.new.foo
#=> main
C.new.bar
#=> #<C:0x2bbc360>

On Ruby 1.8, there is no problem.

Updated by ko1 (Koichi Sasada) over 12 years ago

  • Target version changed from 2.0.0 to 2.6

time up.

Actions #2

Updated by ko1 (Koichi Sasada) over 9 years ago

  • Status changed from Open to Closed

Ruby 2.1 solved this issue.

Actions

Also available in: Atom PDF

Like0
Like0Like0