diff --git a/src/array.c b/src/array.c
index 2ce9993c2725ad05d66d1f899f2d1a9e2bcc4904..413af46262b7c4d1404e753ca020b4ab90399499 100644
--- a/src/array.c
+++ b/src/array.c
@@ -23,7 +23,7 @@
 #include "stuff.h"
 #include "bignum.h"
 
-RCSID("$Id: array.c,v 1.57 1999/10/29 03:34:34 mast Exp $");
+RCSID("$Id: array.c,v 1.58 1999/11/23 10:38:15 mast Exp $");
 
 struct array empty_array=
 {
@@ -1781,7 +1781,7 @@ void gc_mark_array_as_referenced(struct array *a)
       for (e=0; e<a->size; e++)
       {
 	if (a->item[e].type == T_OBJECT && a->item[e].u.object->prog &&
-	    a->item[e].u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT)
+	    a->item[e].u.object->prog->flags & PROGRAM_NO_WEAK_FREE)
 	  gc_mark_svalues(a->item + e, 1);
       }
     else
@@ -1863,7 +1863,7 @@ void gc_free_all_unreferenced_arrays(void)
 	{
 	  if(a->item[e].type <= MAX_COMPLEX &&
 	     !(a->item[e].type == T_OBJECT && a->item[e].u.object->prog &&
-	       a->item[e].u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT) &&
+	       a->item[e].u.object->prog->flags & PROGRAM_NO_WEAK_FREE) &&
 	     gc_do_free(a->item[e].u.refs))
 	    free_svalue(a->item+e);
 	  else
@@ -1875,7 +1875,7 @@ void gc_free_all_unreferenced_arrays(void)
 	{
 	  if(a->item[e].type <= MAX_COMPLEX &&
 	     !(a->item[e].type == T_OBJECT && a->item[e].u.object->prog &&
-	       a->item[e].u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT) &&
+	       a->item[e].u.object->prog->flags & PROGRAM_NO_WEAK_FREE) &&
 	     gc_do_free(a->item[e].u.refs))
 	  {
 	    free_svalue(a->item+e);
diff --git a/src/mapping.c b/src/mapping.c
index 7503c21420416af7c7b533035bc9e0f2d388c849..5e447cfa47ff25be3adbe8c2410eb99fbb87da45 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.46 1999/11/12 07:34:31 hubbe Exp $");
+RCSID("$Id: mapping.c,v 1.47 1999/11/23 10:38:16 mast Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -1101,10 +1101,10 @@ void gc_mark_mapping_as_referenced(struct mapping *m)
 	if (m->flags & MAPPING_FLAG_WEAK)
 	{
 	  if (k->ind.type == T_OBJECT &&
-	      k->ind.u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT)
+	      k->ind.u.object->prog->flags & PROGRAM_NO_WEAK_FREE)
 	    gc_mark_svalues(&k->ind, 1);
 	  if (k->val.type == T_OBJECT && k->val.u.object->prog &&
-	      k->val.u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT)
+	      k->val.u.object->prog->flags & PROGRAM_NO_WEAK_FREE)
 	    gc_mark_svalues(&k->val, 1);
 	}
 	else {
@@ -1202,11 +1202,11 @@ void gc_free_all_unreferenced_mappings(void)
 	{
 	  if((k->val.type <= MAX_COMPLEX &&
 	      !(k->val.type == T_OBJECT &&
-		k->val.u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT) &&
+		k->val.u.object->prog->flags & PROGRAM_NO_WEAK_FREE) &&
 	      gc_do_free(k->val.u.refs)) ||
 	     (k->ind.type <= MAX_COMPLEX &&
 	      !(k->ind.type == T_OBJECT &&
-		k->ind.u.object->prog->flags & PROGRAM_NO_WEAK_DESTRUCT) &&
+		k->ind.u.object->prog->flags & PROGRAM_NO_WEAK_FREE) &&
 	      gc_do_free(k->ind.u.refs)))
 	  {
 	    *prev=k->next;
diff --git a/src/modules/Gmp/mpz_glue.c b/src/modules/Gmp/mpz_glue.c
index 8ca4d7d5d6760391d4ef190b69af4594f8f0bc9a..72c64aa021ac1eb46fcdfe27dfd0b3c39da1ed1c 100644
--- a/src/modules/Gmp/mpz_glue.c
+++ b/src/modules/Gmp/mpz_glue.c
@@ -4,7 +4,7 @@
 ||| See the files COPYING and DISCLAIMER for more information.
 \*/
 #include "global.h"
-RCSID("$Id: mpz_glue.c,v 1.66 1999/11/12 07:33:45 hubbe Exp $");
+RCSID("$Id: mpz_glue.c,v 1.67 1999/11/23 10:38:17 mast Exp $");
 #include "gmp_machine.h"
 
 #if defined(HAVE_GMP2_GMP_H) && defined(HAVE_LIBGMP2)
@@ -1376,7 +1376,7 @@ void pike_module_init(void)
     MPZ_DEFS();
 
     id=add_program_constant("bignum", bignum_program=end_program(), 0);
-    bignum_program->flags |= PROGRAM_NO_WEAK_DESTRUCT|PROGRAM_NO_EXPLICIT_DESTRUCT;
+    bignum_program->flags |= PROGRAM_NO_WEAK_FREE|PROGRAM_NO_EXPLICIT_DESTRUCT;
     
     /* Alert bignum.c that we have been loaded /Hubbe */
     gmp_library_loaded=1;
diff --git a/src/program.h b/src/program.h
index 6aa0ed53e6ce96ab42fd1275e03a6ba851b9727c..2c66ae3d53487301e93715ec3069070938ff240d 100644
--- a/src/program.h
+++ b/src/program.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: program.h,v 1.67 1999/11/23 03:12:03 grubba Exp $
+ * $Id: program.h,v 1.68 1999/11/23 10:38:16 mast Exp $
  */
 #ifndef PROGRAM_H
 #define PROGRAM_H
@@ -224,7 +224,7 @@ struct pike_trampoline
 
 /* Objects should not be destructed even when they only has weak
  * references left. */
-#define PROGRAM_NO_WEAK_DESTRUCT 256
+#define PROGRAM_NO_WEAK_FREE 256
 
 /* Objects should not be destructed by f_destruct(). */
 #define PROGRAM_NO_EXPLICIT_DESTRUCT 512