summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2020-11-04 11:33:59 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2020-11-04 14:40:50 -0800
commita8581ce673e14ba5ff48d0a3cb71368daa82558b (patch)
tree75b8e6f31934c8d0504aba37098f7c5828c88e85 /gc.c
parent704fb0b815151504f731c9ddb52cad0b530b545f (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.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gc.c b/gc.c
index 65876894bd..abc311a8e9 100644
--- a/gc.c
+++ b/gc.c
@@ -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) \