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