Index: trunk/test/t-mantis.c
===================================================================
--- trunk/test/t-mantis.c	(Revision 2764)
+++ trunk/test/t-mantis.c	(Arbeitskopie)
@@ -326,6 +326,30 @@
         :)
     }),
 #endif // __XML_DOM__
+    ({ "0000689", 0,
+        (:
+            // Each pass will crash with approx. 40% propability.
+            // So let's make that a sure thing:
+            foreach(int i: 1000)
+            {
+                mapping xm = ([
+                    clone_object(this_object()),
+                    clone_object(this_object())
+                ]);
+                object * x = m_indices(xm);
+
+                destruct(x[0]);
+                destruct(x[1]);
+
+                // This will crash when there is a destructed object with the
+                // same hash value as '0' and would have another hash value
+                // with being '0' instead of a destructed object.
+                m_delete(mkmapping(x),0);
+            }
+
+            return 1;
+        :)
+    }),
 });
 
 void run_test()
Index: trunk/src/mapping.c
===================================================================
--- trunk/src/mapping.c	(Revision 2764)
+++ trunk/src/mapping.c	(Arbeitskopie)
@@ -821,6 +821,11 @@
         map_index->u.str = make_tabled(map_index->u.str);
     }
 
+    /* Check if it's a destructed object.
+     */
+    if (destructed_object_ref(map_index))
+        assign_svalue(map_index, &const0);
+
     /* Generate secondary information for types which usually
      * have none (required for hashing).
      */
