diff --git a/src/program.c b/src/program.c
index 118b2e3c3b8990684747776948d12b2fb1859a44..b62896494ad7afaa3990de842c769392467b54fa 100644
--- a/src/program.c
+++ b/src/program.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: program.c,v 1.161 1999/10/21 21:34:33 hubbe Exp $");
+RCSID("$Id: program.c,v 1.162 1999/10/21 22:16:45 grubba Exp $");
 #include "program.h"
 #include "object.h"
 #include "dynamic_buffer.h"
@@ -601,10 +601,14 @@ void low_start_new_program(struct program *p,
   fake_object->parent=0;
   fake_object->parent_identifier=0;
   fake_object->prog=p;
+  add_ref(p);
+#ifdef DEBUG_MALLOC
+  fake_object->dead_prog=p;
+  add_ref(p);
+#endif /* DEBUG_MALLOC */
 #ifdef PIKE_SECURITY
   fake_object->prot=0;
 #endif
-  add_ref(p);
 
   if(name)
   {
@@ -2923,7 +2927,7 @@ void gc_check_all_programs(void)
   {
     int e;
 
-    dmalloc_touch(p);
+    debug_malloc_touch(p);
 
     for(e=0;e<p->num_constants;e++)
       debug_gc_check_svalues(& p->constants[e].sval, 1, T_PROGRAM, p);