diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-08 02:51:38 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-08 02:51:38 +0000 |
commit | f0680bdee869d37c0b654d0226ae665e6adc934e (patch) | |
tree | d9eecce90301c7aa9713e27063f8c373f42a011f /object.c | |
parent | 0399a3d47b4e784918f95a36c2987633c29f8690 (diff) |
merge revision(s) 52856,52906: [Backport #11760]
* 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.
* marshal.c (compat_allocator_table): initialize
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@52933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -1771,6 +1771,13 @@ rb_class_initialize(int argc, VALUE *argv, VALUE klass) return klass; } +void +rb_undefined_alloc(VALUE klass) +{ + rb_raise(rb_eTypeError, "allocator undefined for %"PRIsVALUE, + klass); +} + /* * call-seq: * class.allocate() -> obj @@ -1807,8 +1814,7 @@ rb_obj_alloc(VALUE klass) } allocator = rb_get_alloc_func(klass); if (!allocator) { - rb_raise(rb_eTypeError, "allocator undefined for %"PRIsVALUE, - klass); + rb_undefined_alloc(klass); } #if !defined(DTRACE_PROBES_DISABLED) || !DTRACE_PROBES_DISABLED |