summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/drb/drb.rb5
-rw-r--r--test/drb/test_drb.rb8
3 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index f9277ed71c..ffeef81d3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Feb 14 00:40:49 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/ddrb/drb.rb (InvokeMethod.perform): pass DRb info to sub thread.
+
+ * test/drb/test_drb.rb (test_01_safe1_safe4_eval): fix test case.
+
Sun Feb 13 23:13:46 2005 Kouhei Sutou <kou@cozmixng.org>
* lib/rss/dublincore.rb (RSS::DublicCoreModel#date{,=}): added
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb
index ab2cba894f..a3abd45116 100644
--- a/lib/drb/drb.rb
+++ b/lib/drb/drb.rb
@@ -1455,13 +1455,16 @@ module DRb
setup_message
if $SAFE < @safe_level
+ info = Thread.current['DRb']
if @block
- @result = Thread.new {
+ @result = Thread.new {
+ Thread.current['DRb'] = info
$SAFE = @safe_level
perform_with_block
}.value
else
@result = Thread.new {
+ Thread.current['DRb'] = info
$SAFE = @safe_level
perform_without_block
}.value
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index ae8ba4252a..16d47315a8 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -241,12 +241,16 @@ class TestDRbEval < Test::Unit::TestCase
remote_class = four.remote_class
+ assert_equal(1, remote_class.class_eval('1'))
+
+ assert_equal(1, remote_class.module_eval('1'))
+
assert_raises(SecurityError) do
- remote_class.class_eval('ENV.inspect')
+ remote_class.class_eval('ENV = {}')
end
assert_raises(SecurityError) do
- remote_class.module_eval('ENV.inspect')
+ remote_class.module_eval('ENV = {}')
end
end
end