diff --git a/src/mapping.c b/src/mapping.c
index 181ade5a54c1653c8c86db33736e623c97563c06..cb4db69880a68ed6e3c3c6b36d73b56cdb691379 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -404,7 +404,7 @@ void check_mapping_for_destruct(struct mapping *m)
     m->val_types |= BIT_INT;
     for(e=0;e<m->hashsize;e++)
     {
-      for(prev= m->hash + e;k=*prev;prev=&k->next)
+      for(prev= m->hash + e;k=*prev;)
       {
 	check_destructed(& k->val);
 	
@@ -419,6 +419,7 @@ void check_mapping_for_destruct(struct mapping *m)
 	}else{
 	  val_types |= 1 << k->val.type;
 	  ind_types |= 1 << k->ind.type;
+	  prev=&k->next;
 	}
       }
     }