From 45d586ad60ba807dbb8c5f17b0ac156095eb4fbf Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Sat, 2 May 2026 06:55:30 +0200 Subject: Never increment `max_iv_count` on Object / BasicObject. Otherwise some code defining ivars on a naked object early during program boot can cause all objects to be larger than needed. This seem like it was always the intention, but wasn't quite properly prevented. Also stop updating `max_iv_count` during GC marking as it is redundant. --- object.c | 1 + 1 file changed, 1 insertion(+) (limited to 'object.c') diff --git a/object.c b/object.c index eaec5e89d2..23a83c572e 100644 --- a/object.c +++ b/object.c @@ -2224,6 +2224,7 @@ rb_class_initialize(int argc, VALUE *argv, VALUE klass) } } rb_class_set_super(klass, super); + RCLASS_SET_MAX_IV_COUNT(klass, RCLASS_MAX_IV_COUNT(super)); RCLASS_SET_ALLOCATOR(klass, RCLASS_ALLOCATOR(super)); rb_make_metaclass(klass, RBASIC(super)->klass); rb_class_inherited(super, klass); -- cgit v1.2.3