mescc: Fix by value assignment from array-of struct entry.
[mes.git] / gc.c
diff --git a/gc.c b/gc.c
index d2800bc10d07472b5d4ee0b00ebb81347c59973d..6aba0d3fcbc074c15ff6724cfb358baed4cf79a6 100644 (file)
--- a/gc.c
+++ b/gc.c
@@ -70,39 +70,17 @@ gc_copy (SCM old) ///((internal))
 {
   if (TYPE (old) == TBROKEN_HEART) return g_cells[old].car;
   SCM new = g_free++;
-#if 0
   g_news[new] = g_cells[old];
-#else
-  SCM y = new;
-  SCM z = old;
-  SCM zz = TYPE (z);
-  NTYPE (y) = zz;
-  zz = CAR (z);
-  NCAR (y) = zz;
-  zz = CDR (z);
-  NCDR (y) = zz;
-#endif
   if (NTYPE (new) == TVECTOR)
     {
       NVECTOR (new) = g_free;
       for (int i=0; i<LENGTH (old); i++)
-#if 0
-        //__GNUC__
+#if __GNUC__
         g_news[g_free++] = g_cells[VECTOR (old)+i];
 #else
       {
-        //eputs ("gc_copy\n");
-        y = g_free;
-        g_free++;
-        z = VECTOR (old);
-        z = z + i;
-        //z = g_cells[z];
-        zz = TYPE (z);
-        NTYPE (y) = zz;
-        zz = CAR (z);
-        NCAR (y) = zz;
-        zz = CDR (z);
-        NCDR (y) = zz;
+        SCM b = VECTOR (old)+i;
+        g_news[g_free++] = g_cells[b];
       }
 #endif
     }