diff options
author | Aaron Patterson <tenderlove@ruby-lang.org> | 2020-11-04 11:33:59 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2020-11-04 14:40:50 -0800 |
commit | a8581ce673e14ba5ff48d0a3cb71368daa82558b (patch) | |
tree | 75b8e6f31934c8d0504aba37098f7c5828c88e85 /gc.c | |
parent | 704fb0b815151504f731c9ddb52cad0b530b545f (diff) |
ensure T_OBJECT objects have internals initialized
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3734
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -2304,7 +2304,11 @@ rb_newobj(void) VALUE rb_newobj_of(VALUE klass, VALUE flags) { - return newobj_of(klass, flags & ~FL_WB_PROTECTED, 0, 0, 0, flags & FL_WB_PROTECTED); + if ((flags & RUBY_T_MASK) == T_OBJECT) { + return newobj_of(klass, (flags | ROBJECT_EMBED) & ~FL_WB_PROTECTED , Qundef, Qundef, Qundef, flags & FL_WB_PROTECTED); + } else { + return newobj_of(klass, flags & ~FL_WB_PROTECTED, 0, 0, 0, flags & FL_WB_PROTECTED); + } } #define UNEXPECTED_NODE(func) \ |