encoding.c: defer finding encoding

* encoding.c (enc_m_loader): defer finding encoding object not to
  be infected by marshal source.  [ruby-core:71793] [Bug #11760]
* marshal.c (r_object0): enable compatible loader on USERDEF
  class.  the loader function is called with the class itself,
  instead of an allocated object, and the loaded data.
* marshal.c (compat_allocator_table): intialize
  compat_allocator_tbl on demand.
* object.c (rb_undefined_alloc): extract from rb_obj_alloc.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-12-02 07:27:22 +00:00
parent a497ed3733
commit 2a66cc554d
6 changed files with 59 additions and 5 deletions

View file

@ -33,6 +33,9 @@ class TestEncoding < Test::Unit::TestCase
assert_raise(TypeError) { e.dup }
assert_raise(TypeError) { e.clone }
assert_equal(e.object_id, Marshal.load(Marshal.dump(e)).object_id)
assert_not_predicate(e, :tainted?)
Marshal.load(Marshal.dump(e).taint)
assert_not_predicate(e, :tainted?, '[ruby-core:71793] [Bug #11760]')
end
end