Actions
Bug #8622
closedTracepoint API: B_RETURN_EVENT not triggered when "return" used inside lambda
Description
=begin
I'm using the Tracepoint API in my gem and I noticed that when the keyword return
is used inside a lambda, a block return event (B_RETURN_EVENT) is not triggered. For example, I would expect the same number of B_CALL_EVENT and B_RETURN_EVENT in the piece of code
TracePoint.new(:b_call, :b_return) do |tp|
warn tp.event
end.enable
a = lambda { return "hola" }.call
# Output:
# b_call
#
# Expected Output:
# b_call
# b_return
This seems very similar to issue #8489, so hopefully the fix would be as simple as that one.
Thanks a lot.
=end
Updated by ko1 (Koichi Sasada) over 11 years ago
- Category set to core
- Assignee set to ko1 (Koichi Sasada)
- Target version set to 2.1.0
Updated by deivid (David Rodríguez) over 11 years ago
=begin
Notice that I am blaming "return" because this doesn't happen if "return" is not explicited.
TracePoint.new(:b_call, :b_return) do |tp|
warn tp.event
end.enable
a = lambda { "hola" }.call
# Output:
# b_call
# b_return
=end
Thanks!
Updated by ko1 (Koichi Sasada) about 11 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r43237.
David, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- vm.c (vm_exec): support :b_return event for "lambda{return}.call".
[Bug #8622] - test/ruby/test_settracefunc.rb: add a test.
Actions
Like0
Like0Like0Like0