ref: a2d39ddf4e0d6dc324bd0af41d89c942f4f8a49c
parent: 058840464506a633eae1c49e349a242be31dba69
author: Ori Bernstein <[email protected]>
date: Wed Mar 20 07:44:24 EDT 2013
Calculate the size to blit when creating a union correctly.
--- a/6/simp.c
+++ b/6/simp.c
@@ -295,10 +295,10 @@
return sz;
break;
case Tyunion:
- sz = Ptrsz;
+ sz = Wordsz;
for (i = 0; i < t->nmemb; i++)
if (t->udecls[i]->etype)
- sz = max(sz, tysize(t->udecls[i]->etype) + Ptrsz);
+ sz = max(sz, tysize(t->udecls[i]->etype) + Wordsz);
return align(sz, Ptrsz);
break;
case Tybad: case Tyvar: case Typaram: case Tyunres: case Tygeneric: case Ntypes:
@@ -987,7 +987,7 @@
u = addk(u, Wordsz);
if (stacktype(uc->etype)) {
elt = addr(s, elt, uc->etype);
- sz = disp(n->line, tysize(uc->utype));
+ sz = disp(n->line, tysize(uc->etype));
r = mkexpr(n->line, Oblit, u, elt, sz, NULL);
} else {
r = set(deref(u), elt);