@@ -4349,19 +4349,7 @@ freePGconn(PGconn *conn)
4349
4349
free (conn -> events [i ].name );
4350
4350
}
4351
4351
4352
- /* clean up pg_conn_host structures */
4353
- for (int i = 0 ; i < conn -> nconnhost ; ++ i )
4354
- {
4355
- free (conn -> connhost [i ].host );
4356
- free (conn -> connhost [i ].hostaddr );
4357
- free (conn -> connhost [i ].port );
4358
- if (conn -> connhost [i ].password != NULL )
4359
- {
4360
- explicit_bzero (conn -> connhost [i ].password , strlen (conn -> connhost [i ].password ));
4361
- free (conn -> connhost [i ].password );
4362
- }
4363
- }
4364
- free (conn -> connhost );
4352
+ pqReleaseConnHosts (conn );
4365
4353
4366
4354
free (conn -> client_encoding_initial );
4367
4355
free (conn -> events );
@@ -4423,6 +4411,31 @@ freePGconn(PGconn *conn)
4423
4411
free (conn );
4424
4412
}
4425
4413
4414
+ /*
4415
+ * pqReleaseConnHosts
4416
+ * - Free the host list in the PGconn.
4417
+ */
4418
+ void
4419
+ pqReleaseConnHosts (PGconn * conn )
4420
+ {
4421
+ if (conn -> connhost )
4422
+ {
4423
+ for (int i = 0 ; i < conn -> nconnhost ; ++ i )
4424
+ {
4425
+ free (conn -> connhost [i ].host );
4426
+ free (conn -> connhost [i ].hostaddr );
4427
+ free (conn -> connhost [i ].port );
4428
+ if (conn -> connhost [i ].password != NULL )
4429
+ {
4430
+ explicit_bzero (conn -> connhost [i ].password ,
4431
+ strlen (conn -> connhost [i ].password ));
4432
+ free (conn -> connhost [i ].password );
4433
+ }
4434
+ }
4435
+ free (conn -> connhost );
4436
+ }
4437
+ }
4438
+
4426
4439
/*
4427
4440
* store_conn_addrinfo
4428
4441
* - copy addrinfo to PGconn object
0 commit comments