diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike
index 5c0d79e341ef9458e83acb0cae09ba292d6e72a6..70fce69555cf268ac901bcca89ec8043b05c4ef0 100644
--- a/lib/modules/Sql.pmod/pgsql.pike
+++ b/lib/modules/Sql.pmod/pgsql.pike
@@ -493,8 +493,10 @@ private void waitauthready() {
 }
 
 protected void destroy() {
-  proxy.unnamedstatement = 0;		// Forget about pending statements
-  destruct(proxy);
+  if (proxy) {
+    proxy.unnamedstatement = 0;		// Forget about pending statements
+    destruct(proxy);
+  }
 }
 
 //! For PostgreSQL this function performs the same function as @[resync()].
diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 8d94038f76b609d973023561d826c3906e161491..1881a1ef3e86cf6b29ad757d49ad9c2fda2cd135 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -712,7 +712,8 @@ outer:
     };
     PD("Connect error %s\n", describe_backtrace(err));
     catch(destruct(pgsqlsess->waitforauthready));
-    destruct(this);
+    if (this)
+      destruct(this);
   }
 
   private string _sprintf(int type) {