diff --git a/src/iterators.cmod b/src/iterators.cmod
index ef290dcb8f3d22ffecef75a6d43342d3ea77bdbf..d2e34ae9c06ee764173bcbec77d67c536cd5e83c 100644
--- a/src/iterators.cmod
+++ b/src/iterators.cmod
@@ -666,8 +666,9 @@ PIKECLASS multiset_iterator
     {
       struct object *o = low_clone (multiset_iterator_program);
       struct multiset_iterator_struct *copy = OBJ2_MULTISET_ITERATOR (o);
-      if ((copy->l = li->l))
-	add_ref(li->l);
+      if (!(copy->l = li->l))
+	return o;
+      add_ref(copy->l);
       if ((copy->nodepos = li->nodepos) >= 0) add_msnode_ref (copy->l);
       if ((copy->lock_index = li->lock_index)) {
 	add_ref (copy->l->msd);