diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 866e6a040845446780debc960cbf32557e08dcef..ee77ad81879e8c0ead439e725a1ab97206cd89ce 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -1178,14 +1178,13 @@ private void procmessage() {
   }
   PD("Closing database processloop %O\n",err);
   _delayederror=err;
-  do
+  for(; objectp(portal); portal = qportals->read())
     if(objectp(portal)) {
 #ifdef PG_DEBUG
       showportal(0);
 #endif
       portal->_purgeportal();
     }
-  while (objectp(portal = qportals->read()));
   if(!terminating && _options.reconnect)
     _connectfail();
   else