mescc: Fix by value assignment from array-of struct entry.
[mes.git] / gc.c
diff --git a/gc.c b/gc.c
index 2f197eda4d16b949027b07e030403ad3a0def1ce..6aba0d3fcbc074c15ff6724cfb358baed4cf79a6 100644 (file)
--- a/gc.c
+++ b/gc.c
@@ -53,11 +53,11 @@ gc_flip () ///((internal))
   g_cells = g_news;
   g_news = cells;
 #if _POSIX_SOURCE
-  if (g_debug) fprintf (stderr, " => jam[%d]\n", g_free);
+  if (g_debug) fprintf (stderr, ";;;   => jam[%d]\n", g_free);
 #else
   if (g_debug)
     {
-      eputs (" => jam[");
+      eputs (";;;   => jam[");
       eputs (itoa (g_free));
       eputs ("]\n");
     }
@@ -75,7 +75,14 @@ gc_copy (SCM old) ///((internal))
     {
       NVECTOR (new) = g_free;
       for (int i=0; i<LENGTH (old); i++)
+#if __GNUC__
         g_news[g_free++] = g_cells[VECTOR (old)+i];
+#else
+      {
+        SCM b = VECTOR (old)+i;
+        g_news[g_free++] = g_cells[b];
+      }
+#endif
     }
   TYPE (old) = TBROKEN_HEART;
   CAR (old) = new;
@@ -135,12 +142,14 @@ SCM
 gc ()
 {
 #if _POSIX_SOURCE
-  if (g_debug) fprintf (stderr, "***gc[%d]...", g_free);
+  if (g_debug) fprintf (stderr, ";;; gc[%d:%d]...", g_free, ARENA_SIZE - g_free);
 #else
   if (g_debug)
     {
-      eputs ("***gc[");
+      eputs (";;; gc[");
       eputs (itoa (g_free));
+      eputs (":");
+      eputs (itoa (ARENA_SIZE - g_free));
       eputs ("]...");
     }
 #endif