From 1991b123556ca282da46eef9c08addf3688b40f1 Mon Sep 17 00:00:00 2001 From: David Chisnall Date: Sun, 29 Jan 2023 20:28:23 +0000 Subject: [PATCH] Fix the `instance_size` field for upgraded classes. The instance size was being reported incorrectly which meant that associated objects looked for a reference list slightly after the end of the object. Fixes #228 --- legacy.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/legacy.c b/legacy.c index 25dd18a..51ae17b 100644 --- a/legacy.c +++ b/legacy.c @@ -361,6 +361,10 @@ PRIVATE Class objc_upgrade_class(struct objc_class_gsv1 *oldClass) cls->isa = objc_upgrade_class((struct objc_class_gsv1*)cls->isa); objc_setAssociatedObject((id)cls, &legacy_key, (id)oldClass, OBJC_ASSOCIATION_ASSIGN); } + else + { + cls->instance_size = sizeof(struct objc_class); + } return cls; } PRIVATE struct objc_category *objc_upgrade_category(struct objc_category_gcc *old)