[macruby-changes] [1950] MacRuby/branches/experimental/spec/frozen/core/thread/fixtures/ classes.rb
source_changes at macosforge.org
source_changes at macosforge.org
Sat Jun 27 17:34:34 PDT 2009
Revision: 1950
http://trac.macosforge.org/projects/ruby/changeset/1950
Author: lsansonetti at 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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090627/3388e265/attachment.html>
More information about the macruby-changes
mailing list