shithub: mc

Download patch

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);