diff options
-rw-r--r-- | lib/timeout.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/timeout.rb b/lib/timeout.rb index 441f8d4236..672b2d719c 100644 --- a/lib/timeout.rb +++ b/lib/timeout.rb @@ -26,17 +26,21 @@ module Timeout class Error < RuntimeError end class ExitException < ::Exception # :nodoc: - attr_reader :thread + attr_reader :target + + def self.current_target + Thread.current + end def self.catch exc = new - exc.instance_variable_set(:@thread, Thread.current) + exc.instance_variable_set(:@target, current_target) exc.freeze ::Kernel.catch(exc) {yield exc} end def exception(*) - throw(self, caller) if self.thread == Thread.current + throw(self, caller) if self.target == self.class.current_target self end end |