Fix updating ivars to the new structure.

Some types (e.g. vectors) end up with empty type encodings, for these
cases we assume void* alignment.
main
David Chisnall 8 years ago
parent a54272c1ab
commit 51cc9c0347

@ -202,7 +202,8 @@ static struct objc_ivar_list *upgradeIvarList(Class cls, struct objc_ivar_list_l
n->ivar_list[i].name = l->ivar_list[i].name; n->ivar_list[i].name = l->ivar_list[i].name;
n->ivar_list[i].type = l->ivar_list[i].type; n->ivar_list[i].type = l->ivar_list[i].type;
n->ivar_list[i].offset = l->ivar_list[i].offset; n->ivar_list[i].offset = l->ivar_list[i].offset;
n->ivar_list[i].align = objc_alignof_type(n->ivar_list[i].type); const char *type = l->ivar_list[i].type;
n->ivar_list[i].align = ((type == NULL) || type[0] == 0) ? __alignof__(void*) : objc_alignof_type(type);
ivarSetOwnership(&n->ivar_list[i], ownershipForIvar(cls, i)); ivarSetOwnership(&n->ivar_list[i], ownershipForIvar(cls, i));
} }
return n; return n;

Loading…
Cancel
Save