From a8581ce673e14ba5ff48d0a3cb71368daa82558b Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 4 Nov 2020 11:33:59 -0800 Subject: [PATCH] ensure T_OBJECT objects have internals initialized --- gc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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) \