Revision: 1950 http://trac.macosforge.org/projects/ruby/changeset/1950 Author: lsansonetti@apple.com Date: 2009-06-27 17:34:33 -0700 (Sat, 27 Jun 2009) Log Message: ----------- fixed some code + added a temporary MacRuby workaround (alloy: we probably need to not merge this upstream) Modified Paths: -------------- MacRuby/branches/experimental/spec/frozen/core/thread/fixtures/classes.rb Modified: MacRuby/branches/experimental/spec/frozen/core/thread/fixtures/classes.rb =================================================================== --- MacRuby/branches/experimental/spec/frozen/core/thread/fixtures/classes.rb 2009-06-28 00:28:31 UTC (rev 1949) +++ MacRuby/branches/experimental/spec/frozen/core/thread/fixtures/classes.rb 2009-06-28 00:34:33 UTC (rev 1950) @@ -91,9 +91,10 @@ end def self.status_of_aborting_thread - t = Thread.new { sleep } + t = Thread.new { begin; sleep; ensure; Thread.pass; end } begin Thread.critical = true if Thread.respond_to? :critical + Thread.pass while t.status and t.status != 'sleep' t.kill Status.new t ensure @@ -135,13 +136,16 @@ end def self.dying_thread_ensures(kill_method_name=:kill) - t = Thread.new do + # XXX MacRuby hack: work around local variable corruption because the + # main thread might exit before kill_method_name is used. + t = Thread.new(kill_method_name) do |mid| begin - Thread.current.send(kill_method_name) + Thread.current.send(mid) ensure yield end end + t end def self.dying_thread_with_outer_ensure(kill_method_name=:kill)