diff options
Diffstat (limited to 'lib/drb/drb.rb')
-rw-r--r-- | lib/drb/drb.rb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb index e47b303aa4..6c516f0359 100644 --- a/lib/drb/drb.rb +++ b/lib/drb/drb.rb @@ -1571,17 +1571,23 @@ module DRb if $SAFE < @safe_level info = Thread.current['DRb'] if @block - @result = Thread.new { + @result = Thread.new do Thread.current['DRb'] = info + prev_safe_level = $SAFE $SAFE = @safe_level perform_with_block - }.value + ensure + $SAFE = prev_safe_level + end.value else - @result = Thread.new { + @result = Thread.new do Thread.current['DRb'] = info + prev_safe_level = $SAFE $SAFE = @safe_level perform_without_block - }.value + ensure + $SAFE = prev_safe_level + end.value end else if @block |