From 8c77e58b97465ebfef0d94497a5eecd78f5bef3c Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 20 Apr 2013 05:22:25 +0000 Subject: marshal.c: use ivars of marshal_dump data * marshal.c (w_object): dump no ivars to the original by marshal_dump. [ruby-core:54334] [Bug #8276] * marshal.c (r_object0): copy all ivars of marshal_dump data to the result object instead. [ruby-core:51163] [Bug #7627] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_marshal.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'test/ruby') diff --git a/test/ruby/test_marshal.rb b/test/ruby/test_marshal.rb index baf143bcfb..6d610b3a28 100644 --- a/test/ruby/test_marshal.rb +++ b/test/ruby/test_marshal.rb @@ -553,10 +553,18 @@ class TestMarshal < Test::Unit::TestCase bug8276 = '[ruby-core:54334] [Bug #8276]' t = Bug8276.new(bug8276) s = Marshal.dump(t) - assert_nothing_raised(RuntimeError) {s = Marshal.load(s)} + assert_nothing_raised(RuntimeError, bug8276) {s = Marshal.load(s)} assert_equal(t.data, s.data, bug8276) end + def test_marshal_dump_ivar + s = "data with ivar" + s.instance_variable_set(:@t, 42) + t = Bug8276.new(s) + s = Marshal.dump(t) + assert_raise(RuntimeError) {Marshal.load(s)} + end + def test_class_ivar assert_raise(TypeError) {Marshal.load("\x04\x08Ic\x1bTestMarshal::TestClass\x06:\x0e@ivar_bug\"\x08bug")} assert_raise(TypeError) {Marshal.load("\x04\x08IM\x1bTestMarshal::TestClass\x06:\x0e@ivar_bug\"\x08bug")} -- cgit v1.2.3