Bug #6981

set_trace_func passes strange bindng on method call defined by define_method

Added by Koichi Sasada over 1 year ago. Updated over 1 year ago.

[ruby-core:47429]
Status:Open
Priority:Normal
Assignee:Koichi Sasada
Category:core
Target version:next minor
ruby -v:ruby 2.0.0dev (2012-08-08 trunk 36657) [i386-mswin32_100] Backport:

Description

settracefunc 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

settracefunc(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 Updated by Koichi Sasada over 1 year ago

  • Target version changed from 2.0.0 to next minor

time up.

Also available in: Atom PDF