diff --git a/lib/timeout.rb b/lib/timeout.rb index ad951d2..642114f 100644 --- a/lib/timeout.rb +++ b/lib/timeout.rb @@ -67,7 +67,8 @@ module Timeout return yield(sec) if sec == nil or sec.zero? message = "execution expired" e = Error - bt = catch((klass||ExitException).new) do |exception| + klass ||= ExitException + bt = catch(klass.new(message)) do |exception| begin x = Thread.current y = Thread.start { @@ -76,11 +77,11 @@ module Timeout rescue => e x.raise e else - x.raise exception, message + x.raise exception end } return yield(sec) - rescue (klass||ExitException) => e + rescue klass => e e.backtrace ensure if y