diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/drb/drb.rb | 14 | ||||
-rw-r--r-- | lib/erb.rb | 7 |
2 files changed, 15 insertions, 6 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 diff --git a/lib/erb.rb b/lib/erb.rb index 72da7cde98..215a3f516f 100644 --- a/lib/erb.rb +++ b/lib/erb.rb @@ -864,10 +864,13 @@ class ERB # def result(b=new_toplevel) if @safe_level - proc { + proc do + prev_safe_level = $SAFE $SAFE = @safe_level eval(@src, b, (@filename || '(erb)'), @lineno) - }.call + ensure + $SAFE = prev_safe_level + end.call else eval(@src, b, (@filename || '(erb)'), @lineno) end |