Project

General

Profile

Bug #6981

set_trace_func passes strange bindng on method call defined by define_method

Added by Koichi Sasada about 4 years ago. Updated about 1 year ago.

Status:
Closed
Priority:
Normal
Assignee:
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
#=> #

On Ruby 1.8, there is no problem.

History

#1 [ruby-core:50137] Updated by Koichi Sasada almost 4 years ago

  • Target version changed from 2.0.0 to next minor

time up.

#2 Updated by Koichi Sasada about 1 year ago

  • Status changed from Open to Closed

Ruby 2.1 solved this issue.

Also available in: Atom PDF