[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