From: "nobu (Nobuyoshi Nakada)" Date: 2012-12-30T22:46:38+09:00 Subject: [ruby-core:51198] [ruby-trunk - Bug #6038] #instance_eval bug Issue #6038 has been updated by nobu (Nobuyoshi Nakada). Category set to core Assignee changed from nobu (Nobuyoshi Nakada) to matz (Yukihiro Matsumoto) Target version set to Next Major ---------------------------------------- Bug #6038: #instance_eval bug https://bugs.ruby-lang.org/issues/6038#change-35155 Author: ddebernardy (Denis de Bernardy) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: core Target version: Next Major ruby -v: 1.9.3 instance_eval seems to change the object_id in some cases: begin stack = [] do_stuff = lambda do |&chain| puts "Actual: #{chain.object_id}" chain.call end chain = lambda do if filter = stack.shift filter.call(&chain) end end puts "Expected: #{chain.object_id}" stack << do_stuff chain.instance_eval { @completed = false } chain.call end >> RUBY_VERSION => "1.9.3" >> begin ?> stack = [] >> do_stuff = lambda do |&chain| ?> puts "Actual: #{chain.object_id}" >> chain.call >> end >> ?> chain = lambda do ?> if filter = stack.shift >> filter.call(&chain) >> end >> end >> ?> puts "Expected: #{chain.object_id}" >> stack << do_stuff >> chain.instance_eval { @completed = false } >> chain.call >> end Expected: 2152379740 Actual: 2152379520 -- http://bugs.ruby-lang.org/