diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c
index fd8a737adae0996e2ccb76ce9b1200f6e3ff563c..362d3df967fd0faa514b24f916b1548f3f00d014 100644
--- a/src/backend/utils/mmgr/portalmem.c
+++ b/src/backend/utils/mmgr/portalmem.c
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/mmgr/portalmem.c,v 1.78 2005/04/11 19:51:15 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/mmgr/portalmem.c,v 1.79 2005/05/11 18:05:37 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -475,12 +475,6 @@ CommitHoldablePortals(void)
  *
  * Remove all non-holdable portals created in this transaction.
  * Portals remaining from prior transactions should be left untouched.
- *
- * XXX This assumes that portals can be deleted in a random order, ie,
- * no portal has a reference to any other (at least not one that will be
- * exercised during deletion).	I think this is okay at the moment, but
- * we've had bugs of that ilk in the past.  Keep a close eye on cursor
- * references...
  */
 void
 AtCommit_Portals(void)
@@ -516,6 +510,9 @@ AtCommit_Portals(void)
 
 		/* Zap all non-holdable portals */
 		PortalDrop(portal, true);
+
+		/* Restart the iteration */
+		hash_seq_init(&status, PortalHashTable);
 	}
 }