diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index f15ab7efa1e8021e6a711e3f3d27da189cf404e2..e860ba0cdafd92e454d3d5ae68bc91486d81b8b3 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -597,10 +597,10 @@ private int datarowdebugcount;
 #endif
 
 final void _processloop(.pgsql_util.conxion ci) {
-  if(c && (!ci || c!=ci))	// If we are switching or dropping connections
-    c->close();			// force a close on the old socket
   if(!this)			// Oops, current object already destructed
     return;
+  if(c && (!ci || c!=ci))	// If we are switching or dropping connections
+    c->close();			// force a close on the old socket
   (c=ci)->socket->set_id(procmessage);
   cancelsecret=0;
   portal=0;