From d03fdc5e67558d7509240d0dec4ebe8eb849caa4 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sat, 5 Feb 2011 00:04:35 +0900 Subject: [PATCH] Correctly calculate the size of the ivars of a class. Need to include the size of the super class ivars. --- tools/qfcc/source/type.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/qfcc/source/type.c b/tools/qfcc/source/type.c index a0d18141e..770a1cf8c 100644 --- a/tools/qfcc/source/type.c +++ b/tools/qfcc/source/type.c @@ -861,9 +861,16 @@ type_size (type_t *type) case ty_union: return type->t.symtab->size; case ty_class: - if (!type->t.class->ivars) - return 0; - return type->t.class->ivars->size; + { + class_t *class = type->t.class; + int size; + if (!class->ivars) + return 0; + size = class->ivars->size; + if (class->super_class) + size += type_size (class->super_class->type); + return size; + } case ty_array: return type->t.array.size * type_size (type->t.array.type); case ty_none: