diff --git a/src/mapping.c b/src/mapping.c
index 723c68c2d417b80c59acc36afd0dbf25e2ba85ca..5e869339e66b04ae3eaacb60901866a3bb350fc7 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.138 2001/09/25 05:55:10 hubbe Exp $");
+RCSID("$Id: mapping.c,v 1.139 2001/10/03 22:20:45 hubbe Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -2460,6 +2460,7 @@ void zap_all_mappings(void)
 int mapping_is_constant(struct mapping *m,
 			struct processing *p)
 {
+  int ret=1;
   INT32 e;
   struct keypair *k;
   struct mapping_data *md=m->data;
@@ -2470,11 +2471,16 @@ int mapping_is_constant(struct mapping *m,
     add_ref(md);
     NEW_MAPPING_LOOP(md)
       {
-	if(!svalues_are_constant(&k->ind, 1, md->ind_types, p)) return 0;
-	if(!svalues_are_constant(&k->val, 1, md->val_types, p)) return 0;
+	if(!svalues_are_constant(&k->ind, 1, md->ind_types, p) ||
+	   !svalues_are_constant(&k->val, 1, md->val_types, p))
+	{
+	  ret=0;
+	  e=md->hashsize;
+	  break;
+	}
       }
     md->valrefs--;
     free_mapping_data(md);
   }
-  return 1;
+  return ret;
 }