From: Kazuki Tsujimoto Date: 2011-08-27T18:10:02+09:00 Subject: [ruby-core:39139] [Ruby 1.9 - Bug #5234] `unexpected return' occurs when a proc is called in ensure Issue #5234 has been updated by Kazuki Tsujimoto. The cause is Proc.new doesn't rewrite errinfo. A following patch fixes this problem. I'll commit it to trunk/ruby_1_9_3 later. https://gist.github.com/1175062 ---------------------------------------- Bug #5234: `unexpected return' occurs when a proc is called in ensure http://redmine.ruby-lang.org/issues/5234 Author: Koichi Sasada Status: Open Priority: Normal Assignee: Koichi Sasada Category: core Target version: 1.9.3 ruby -v: ruby 1.9.3dev (2011-08-26 revision 33077) [i686-linux] Similar as Bug #2729, `unexpected return' occurs when a proc is called in ensure. I'm not sure why it doesn't fix with Bug #2729. # test code class C def each begin yield :foo ensure Proc.new end end def detect each{|e| r = yield(e) return true if r } false end end p C.new.detect{|e| true } -- http://redmine.ruby-lang.org