diff -ruN klic-3.003-2002-02-19b/runtime/asyncio.c klic-3.003-2002-02-19c/runtime/asyncio.c
--- klic-3.003-2002-02-19b/runtime/asyncio.c	Sat Feb 16 11:48:52 2002
+++ klic-3.003-2002-02-19c/runtime/asyncio.c	Tue Feb 19 14:40:05 2002
@@ -30,6 +30,8 @@
 #endif
 #endif /* USESIG */
 
+extern void copy_one_term();
+
 static q* asyncio_streams = NULL;
 static long fd_setsize;
 static fd_set sigio_infds;
@@ -216,7 +218,9 @@
 #define CopyIfNeeded(fd, array) \
 { \
   if ((array)[fd] != 0) { \
-    allocp = copy_one_term(&array[fd], allocp, ntop, otop, nsize, osize); \
+    set_heapp(allocp); \
+    copy_one_term(&array[fd]); \
+    allocp = heapp(); \
   } \
 }
 
@@ -225,7 +229,6 @@
      q *allocp, *ntop, *otop;
      unsigned long nsize, osize;
 {
-  extern q *copy_one_term();
   long fd;
   for (fd=0; fd<fd_setsize; fd++) {
     CopyIfNeeded(fd, asyncio_streams);
diff -ruN klic-3.003-2002-02-19b/runtime/gc.c klic-3.003-2002-02-19c/runtime/gc.c
--- klic-3.003-2002-02-19b/runtime/gc.c	Tue Feb 19 14:27:18 2002
+++ klic-3.003-2002-02-19c/runtime/gc.c	Tue Feb 19 14:37:14 2002
@@ -750,19 +750,13 @@
   interface routine for copying one term
 */
 
-extern q*
-copy_one_term(term, allocp, ntop, otop, nsize, osize)
+extern void
+copy_one_term(term)
   q* term;
-  q* allocp;
-  q* ntop;
-  q* otop;
-  unsigned long nsize, osize;
 {
   declare_globals;
   push_gc_stack(term, gcsp, gcmax);
-  set_heapp(allocp);
   copy_terms(gcsp, gcmax);
-  return heapp();
 }
 
 /*
diff -ruN klic-3.003-2002-02-19b/runtime/ktimer.c klic-3.003-2002-02-19c/runtime/ktimer.c
--- klic-3.003-2002-02-19b/runtime/ktimer.c	Mon Feb 18 16:42:41 2002
+++ klic-3.003-2002-02-19c/runtime/ktimer.c	Tue Feb 19 14:41:57 2002
@@ -13,6 +13,8 @@
 #include "timer.h"
 #include <klic/sighndl.h>
 
+extern void copy_one_term();
+
 void klic_timer_interrupt_handler()
 {
   declare_globals;
@@ -100,14 +102,13 @@
      unsigned long nsize, osize;
 {
   struct timer_reservation_rec *trec;
-  extern q *copy_one_term();
+  set_heapp(allocp);
   for (trec = timer_reservations;
        trec != 0;
        trec = trec->next) {
-    allocp =
-      copy_one_term(&trec->data, allocp, ntop, otop, nsize, osize);
+    copy_one_term(&trec->data);
   }
-  return allocp;
+  return heapp();
 }
 
 void init_klic_timer_handling()
diff -ruN klic-3.003-2002-02-19b/runtime/signal.c klic-3.003-2002-02-19c/runtime/signal.c
--- klic-3.003-2002-02-19b/runtime/signal.c	Sat Feb 16 12:05:07 2002
+++ klic-3.003-2002-02-19c/runtime/signal.c	Tue Feb 19 14:44:20 2002
@@ -12,6 +12,8 @@
 #include <klic/struct.h>
 #include <klic/sighndl.h>
 
+extern void copy_one_term();
+
 /****************************************
   GENERAL SIGNAL HANDLING UTILITY
 ****************************************/
@@ -142,15 +144,13 @@
      unsigned int nsize, osize;
 {
   int sig;
-  extern q *copy_one_term();
+  set_heapp(allocp);
   for (sig = 0; sig < NSIG; sig++) {
     if (signal_streams[sig] != 0) {
-      allocp =
-	copy_one_term(&signal_streams[sig],
-		      allocp, ntop, otop, nsize, osize);
+      copy_one_term(&signal_streams[sig]);
     }
   }
-  return allocp;
+  return heapp();
 }
 
 static int streamed_signal_handler(allocp, sig)
diff -ruN klic-3.003-2002-02-19b/runtime/sysc.kl1 klic-3.003-2002-02-19c/runtime/sysc.kl1
--- klic-3.003-2002-02-19b/runtime/sysc.kl1	Tue Feb 19 13:59:41 2002
+++ klic-3.003-2002-02-19c/runtime/sysc.kl1	Tue Feb 19 14:47:05 2002
@@ -11,18 +11,18 @@
 
 GD_USE_CLASS(predicate);
 
+extern void copy_one_term();
+
 static q* gc_postmortem_args(allocp, ntop, otop, nsize, osize)
      q *allocp, *ntop, *otop;
      unsigned int nsize, osize;
 {
   declare_globals;
-  extern q *copy_one_term();
+  set_heapp(allocp);
   if (postmortem_args != 0) {
-    return copy_one_term(&postmortem_args, allocp,
-			 ntop, otop, nsize, osize);
-  } else {
-    return allocp;
+    copy_one_term(&postmortem_args);
   }
+  return heapp();
 }
 ".
 
